CREATE TABLE pracownicy ( pracownicy_id INT NOT NULL AUTO_INCREMENT, account_id INT NOT NULL, numer_pracownika INT NOT NULL, imie VARCHAR(20) NOT NULL, nazwisko VARCHAR(25) NOT NULL, stanowisko VARCHAR(100) NOT NULL, dzial CHAR(3), PRIMARY KEY (pracownicy_id), INDEX(numer_pracownika), CONSTRAINT fkey_pracownicy_account_id FOREIGN KEY(account_id) REFERENCES accounts(account_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE grafiki ( grafiki_id INT NOT NULL AUTO_INCREMENT, numer_karty INT NOT NULL, numer_pracownika INT NOT NULL, DATA DATE NOT NULL, godzina_od TIME NOT NULL, godzina_do TIME NOT NULL, PRIMARY KEY(grafiki_id), INDEX(numer_pracownika), CONSTRAINT fkey_grafiki_numer_pracownika FOREIGN KEY(numer_pracownika) REFERENCES pracownicy(numer_pracownika) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE rejestracje_hid ( rejestracje_hid_id INT NOT NULL AUTO_INCREMENT, numer_karty INT NOT NULL, godzina TIME NOT NULL, kierunek TINYINT NOT NULL, tryb TINYINT NOT NULL, czytnik TINYINT NOT NULL, PRIMARY KEY(rejestracje_hid_id), INDEX(numer_karty), CONSTRAINT fkey_rejestracje_hid_numer_karty FOREIGN KEY(numer_karty) REFERENCES grafiki(numer_karty) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Przy dodawaniu ostatniej mysql wywala błąd:
Cytat
ERROR 1005 (HY000): Can't create table '.\moja_baza\rejestracje_hid.frm' (errno: 150)
Problem ewidentnie z kluczem obcym w tabeli rejestracje_hid. Macie jakiś pomysł? Ja nie widzę błędu. Próbowałem też na najnowszej bazie danych 5.0.45
EDIT:
Znalazłem błąd. Od którejś wersji mysql wymaga indexów dla kluczy obcych. Więcej tu: http://bugs.mysql.com/bug.php?id=16290