Mam takie tabele:
DROP TABLE IF EXISTS `przychodnia`.`lekarze`; CREATE TABLE `przychodnia`.`lekarze` ( `ID_LEK` int(3) NOT NULL, `NAZWISKO_IMIE` varchar(30) COLLATE utf8_polish_ci NOT NULL, `TYTUL` varchar(15) COLLATE utf8_polish_ci NOT NULL, `SPECJALNOSC` varchar(40) COLLATE utf8_polish_ci NOT NULL, PRIMARY KEY (`ID_LEK`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci ROW_FORMAT=DYNAMIC;
oraz
DROP TABLE IF EXISTS `przychodnia`.`pacjenci`; CREATE TABLE `przychodnia`.`pacjenci` ( `ID_PAC` int(10) NOT NULL AUTO_INCREMENT, `PESEL` varchar(11) COLLATE utf8_polish_ci DEFAULT NULL, `nazwisko` varchar(30) COLLATE utf8_polish_ci NOT NULL, `imie` varchar(30) COLLATE utf8_polish_ci NOT NULL, `miasto` varchar(30) COLLATE utf8_polish_ci DEFAULT NULL, `adres` varchar(40) COLLATE utf8_polish_ci DEFAULT NULL, `tel` varchar(9) COLLATE utf8_polish_ci DEFAULT NULL, `tel_kom` varchar(9) COLLATE utf8_polish_ci DEFAULT NULL, `rok_ur` varchar(4) COLLATE utf8_polish_ci DEFAULT NULL, `wizyta` date DEFAULT NULL, `plec` varchar(1) COLLATE utf8_polish_ci DEFAULT NULL, `ID_LEK` int(3) NOT NULL, `new` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`ID_PAC`), UNIQUE KEY `PESEL` (`PESEL`) ) ENGINE=InnoDB AUTO_INCREMENT=5479 DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci ROW_FORMAT=DYNAMIC;
no właśnie do tabeli pacjenci chciałem dodać klucz obcy w postaci id_lek z pierwszej tabeli:
ALTER TABLE `przychodnia`.`pacjenci` ADD CONSTRAINT `LEK_1` FOREIGN KEY `LEK_1` (`ID_LEK`) REFERENCES `lekarze` (`ID_LEK`) ON DELETE RESTRICT ON UPDATE RESTRICT , ROW_FORMAT = DYNAMIC;
dostaję informację o błędzie 1005. Jak widać klucz obcy chce zakładać na wartości indeksowanej, silnik jest innoDB, zakładałem też indeks w tabeli pacjenci na id_lek i też nie zadziałało. Nie bardzo wiem gdzie mam błąd.
Rozwiązałem. Okazało się, że tabela powinna była być bez wartości
