[MySQL] mam index, ale Foreign Key mowi, ze nie
ďťż
[MySQL] mam index, ale Foreign Key mowi, ze nie Zobacz wiadomości
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
no i zalozmy najprostsza tablice pracownicy - w niej sa szefowie i pracownicy rozni ich tylko status
CREATE TABLE `pracownicy` ( `id_prac` BIGINT( 20 ) NOT NULL AUTO_INCREMENT , `status` ENUM( 'S', 'P' ) NOT NULL , PRIMARY KEY ( `id_prac` ) ) TYPE = innodb;
no i chce polaczy pola z praca: szef i pracownik do tabeli pracownicy do kolumny id_prac robie:
ALTER TABLE praca ADD FOREIGN KEY ( szef ) REFERENCES pracownicy( id_prac ) ON DELETE CASCADE ON UPDATE CASCADE
dostaję error, jak zrobię:
SHOW INNODB STATUS
to widzę:
Error in foreign key constraint of table public/#sql-76c_55: FOREIGN KEY (szef) REFERENCES pracownicy(id_prac) ON DELETE CASCADE ON UPDATE CASCADE: Cannot find an index in the referenced table where the referenced columns appear as the first columns, or column types in the table and the referenced table do not match for constraint.
Miałek ten sam problem tylko myślalem ze to winna windowsa ze nie da sie etgo skonfigurowac.Blad wystepował na mysql 5.0 jak bedziesz mial rozwiazanie to daj znac.
> Witam grupowiczow. > > Mam tabele: > > CREATE TABLE `praca` ( > `id_p` bigint(20) NOT NULL auto_increment, > `szef` bigint(20) unsigned NOT NULL, > `pracownik` bigint(20) unsigned NOT NULL, > PRIMARY KEY (`id_p`), > KEY `szef` (`szef`), > KEY `pracownik` (`pracownik`) > ) ENGINE=InnoDB DEFAULT CHARSET=latin2; > > no i zalozmy najprostsza tablice pracownicy - w niej sa szefowie i pracownicy > rozni ich tylko status > > CREATE TABLE `pracownicy` ( > `id_prac` BIGINT( 20 ) NOT NULL AUTO_INCREMENT , > `status` ENUM( 'S', 'P' ) NOT NULL , > PRIMARY KEY ( `id_prac` ) > ) TYPE = innodb; > > no i chce polaczy pola z praca: szef i pracownik do tabeli pracownicy > do kolumny id_prac robie: > > ALTER TABLE praca ADD FOREIGN KEY ( szef ) REFERENCES pracownicy( id_prac ) ON > DELETE CASCADE ON UPDATE CASCADE > > dostaję error, jak zrobię: > > SHOW INNODB STATUS > > to widzę: > > Error in foreign key constraint of table public/#sql-76c_55: > FOREIGN KEY (szef) REFERENCES pracownicy(id_prac) ON DELETE CASCADE ON UPDATE > CASCADE: > Cannot find an index in the referenced table where the > referenced columns appear as the first columns, or column types > in the table and the referenced table do not match for constraint. > > a przeciez kolumna szef jest indeksem... > > jakies pomysly? > > z gory dzieki za pomoc > pzdr R > > > > -- > Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/ >
> Miałek ten sam problem tylko myślalem ze to winna windowsa ze nie da sie > etgo skonfigurowac.Blad wystepował na mysql 5.0 jak bedziesz mial > rozwiazanie to daj znac.
nie, sorry, ze dopiero teraz odpisuje, juz dawno (w zasadzie w kilka minut po wyslaniu posta sie skapnalem co bylo zle)
otoz moje kolumny te zwiazane byly BIGINT ale byly kolumna na ktora wskazywaly byly BIGINT UNSIGNED ;-)
a jak wiadomo kolumna, ktora moze przyjmowac wartosc -1212121212121212 ni jak ma sie do klucza glownego tez BIG INT ale UNSIGNED ;-)
ogolnie: sygnaturki kolumn relacyjnych MUSZA byc kubek w kubek takie same!!
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona