Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z kluczami obcymi
Forum PHP.pl > Forum > Bazy danych > MySQL
lvs
Witam. Mam nastepujacy problem... Nie moge dodac obcych kluczy do tabeli bm_lekarze. Siedze juz nad tym dobre pare godzin, przeszukalem mase stron, a to wciaz nie chce dzialac...

Tworze tabele :

Kod
CREATE TABLE `bm_wojewodztwa` (
`id` INT UNSIGNED AUTO_INCREMENT,
`wojewodztwo` VARCHAR( 40 ) default NULL,
UNIQUE (id),
PRIMARY KEY (`id`)
) ENGINE = innodb CHARACTER SET utf8 COLLATE utf8_general_ci;


CREATE TABLE `bm_specjalizacja` (
`id` INT UNSIGNED AUTO_INCREMENT ,
`specjalizacja` VARCHAR( 30 ) default NULL ,
UNIQUE (id),
PRIMARY KEY (id)
) ENGINE = innodb CHARACTER SET utf8 COLLATE utf8_general_ci;


CREATE TABLE `bm_typ_placowki` (
`id` INT UNSIGNED AUTO_INCREMENT ,
`typ_placowki` VARCHAR( 35 ) default NULL,
UNIQUE (id),
PRIMARY KEY (id)
) ENGINE = INNODB CHARACTER SET utf8 COLLATE utf8_general_ci;

CREATE TABLE `bm_kontakt` (
`id` INT AUTO_INCREMENT ,
`telefon` VARCHAR( 30 ) default NULL ,
`email` VARCHAR( 30 ) default NULL ,
`strona_www` VARCHAR( 30 ) default NULL,
UNIQUE (id),
PRIMARY KEY (id)
) ENGINE = INNODB CHARACTER SET utf8 COLLATE utf8_general_ci;


CREATE TABLE `bm_opis` (
`id` INT( 10 ) UNSIGNED AUTO_INCREMENT ,
`opis` TEXT default NULL,
UNIQUE (id),
PRIMARY KEY (id)
) ENGINE = innodb CHARACTER SET utf8 COLLATE utf8_general_ci;


Nastepnie probuje utworzyc tabele bm_lekarze :

Kod
CREATE TABLE `bm_lekarze` (
`id_lekarza` INT( 10 ) UNSIGNED AUTO_INCREMENT UNIQUE NOT NULL,
`nazwa` VARCHAR( 45 ) NOT NULL ,
`ulica` VARCHAR( 45 ) NOT NULL ,
`kod_pocztowy` VARCHAR( 10 ) NOT NULL ,
`miasto` VARCHAR( 30 ) NOT NULL ,
`bm_wojewodztwo_id` INT( 10 ) UNSIGNED UNIQUE NOT NULL ,
`bm_specjalizacja_id` INT( 10 ) UNSIGNED UNIQUE NOT NULL ,
`bm_typ_placowki_id` INT( 10 ) UNSIGNED UNIQUE NOT NULL ,
`bm_kontakt_id` INT( 10 ) UNSIGNED UNIQUE NOT NULL ,
`bm_opis_id` INT( 10 ) UNSIGNED UNIQUE NOT NULL ,
Primary Key (id_lekarza),
Index (bm_wojewodztwo_id, bm_specjalizacja_id, bm_typ_placowki_id, bm_kontakt_id,bm_opis_id),
CONSTRAINT Foreign Key (`bm_wojewodztwo_id`) references `bm_wojewodztwa` (`id`) on delete cascade on update cascade,
CONSTRAINT Foreign Key (`bm_specjalizacja_id`) references `bm_specjalizacja` (`id`) on delete cascade on update cascade,
CONSTRAINT Foreign Key (`bm_typ_placowki_id`) references `bm_typ_placowki` (`id`) on delete cascade on update cascade,
CONSTRAINT Foreign Key (`bm_kontakt_id`) references `bm_kontakt` (`id`) on delete cascade on update cascade,
CONSTRAINT Foreign Key (`bm_opis_id`) references `bm_opis` (`id`) on delete cascade on update cascade
) type = innodb CHARACTER SET utf8 COLLATE utf8_general_ci;


blad wyskakuje taki:

MySQL zwrócił komunikat: Dokumentacja
#1005 - Can't create table './test/bm_lekarze.frm' (errno: 150)


Juz sie powoli zalamuje, a musze zrobic ten projekt na uczelnie... Bardzo prosze o pomoc...
dr_bonzo
Wyzolowanie bledu (dodawanie po jednym kluczu):
Cytat
CONSTRAINT Foreign Key (`bm_kontakt_id`) references `bm_kontakt` (`id`) on delete cascade on update cascade

Mysql pluje sie o ten klucz


bm_kontakty.id nie jest UNSIGNED
a bm_lekarze.bm_kontakt_id jest

dodanie UNSIGNED i juz dziala
lvs
Cytat(dr_bonzo @ 28.02.2007, 14:53:52 ) *
Wyzolowanie bledu (dodawanie po jednym kluczu):

Mysql pluje sie o ten klucz
bm_kontakty.id nie jest UNSIGNED
a bm_lekarze.bm_kontakt_id jest

dodanie UNSIGNED i juz dziala



Dzieki wielkie smile.gif)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.