![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) ![]() ![]() |
Próbuje stworzyć projekt bazy danych przy pomocy mysql workbench.
Diagram wygląda tak: ![]() Program generuje następujący kod SQL tworzący bazę danych: Kod SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; CREATE SCHEMA IF NOT EXISTS `address_db` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; USE `address_db`; -- ----------------------------------------------------- -- Table `address_db`.`city` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `address_db`.`city` ( `id` INT NOT NULL , `name` VARCHAR(45) NULL , PRIMARY KEY (`id`) ) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `address_db`.`address` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `address_db`.`address` ( `id` INT NOT NULL , `city` VARCHAR(45) NULL , INDEX `fk_address_city` (`city` ASC) , PRIMARY KEY (`id`) , CONSTRAINT `fk_address_city` FOREIGN KEY (`city` ) REFERENCES `address_db`.`city` (`id` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; Natomiast phpMyAdmin przy próbie uruchomienia tego kodu zwraca błąd: Kod Error SQL query: -- ----------------------------------------------------- -- Table `address_db`.`address` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `address_db`.`address` ( `id` INT NOT NULL , `city` VARCHAR( 45 ) NULL , INDEX `fk_address_city` ( `city` ASC ) , PRIMARY KEY ( `id` ) , CONSTRAINT `fk_address_city` FOREIGN KEY ( `city` ) REFERENCES `address_db`.`city` ( `id` ) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE = InnoDB; MySQL said: #1005 - Can't create table 'address_db.address' (errno: 150) Czy ktoś mógłby mi wyjaśnić w czym leży problem i jak go naprawić? Z góry dziękuję za pomoc. Uwaga! Jeśli nie jesteś w stanie znaleźć i wskazać błędu w powyższym zapytaniu SQL, to uprzejmie proszę, nie wypowiadaj się. Ten post edytował wNogachSpisz 5.02.2012, 18:16:26 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) ![]() ![]() |
w address city jest varchrem a powinno byc tego samego typu co pole do ktorego tworzysz relacje.
w ogole cos pokaszaniłes bo Ci powinno zaznaczyc na wykresie co jest kluczem obcym a tego nie robi. uzyj mysql workbenchowego narzędzia do tworzenia relacji (bodajrze pod cyferką 2 jest to co Cie interesuje) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 59 Pomógł: 0 Dołączył: 13.11.2011 Ostrzeżenie: (0%) ![]() ![]() |
PHPMyAdmin (errno: 150):
Can't create table. Chodzi o foreign key - najpierw stwórz tabele, do której się odwołujesz. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) ![]() ![]() |
HgReed przeciez to jest jedno zapytanie;-)
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) ![]() ![]() |
Oh snap, jak mogłem tak zlamić
![]() Dlaczego workbench nigdzie nie komunikuje o takim błędzie? Jak to najwygodniej debudować? |
|
|
![]()
Post
#6
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) ![]() ![]() |
chill zdarza się. Ja nie znam.
ps. latwo zagooglac kod błędu - wtedy bez problemu znajdziesz rozwiązanie. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) ![]() ![]() |
ps. latwo zagooglac kod błędu - wtedy bez problemu znajdziesz rozwiązanie. Jasne, tyle że wyszedłem od bardziej skomplikowanego przykładu, gdzie zadbałem o typy danych i dostawałem ten sam komunikat. Teraz tamten przykład uproszczę z większą uwagą i miejmy nadzieje że uda się zreprodukować błąd.. Ten post edytował wNogachSpisz 5.02.2012, 20:42:40 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 5.05.2025 - 10:52 |