Googluję i nie mogę znaleźć błędu. Mam trzy tabele:
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
Ten post edytował Jarod 9.08.2007, 21:42:40