Googluję i nie mogę znaleźć błędu. Mam trzy tabele:

  1. CREATE TABLE pracownicy
  2. (
  3. pracownicy_id INT NOT NULL AUTO_INCREMENT,
  4. account_id INT NOT NULL,
  5. numer_pracownika INT NOT NULL,
  6. imie VARCHAR(20) NOT NULL,
  7. nazwisko VARCHAR(25) NOT NULL,
  8. stanowisko VARCHAR(100) NOT NULL,
  9. dzial CHAR(3),
  10. PRIMARY KEY (pracownicy_id),
  11. INDEX(numer_pracownika),
  12. CONSTRAINT fkey_pracownicy_account_id FOREIGN KEY(account_id) REFERENCES accounts(account_id)
  13. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  14.  
  15. CREATE TABLE grafiki
  16. (
  17. grafiki_id INT NOT NULL AUTO_INCREMENT,
  18. numer_karty INT NOT NULL,
  19. numer_pracownika INT NOT NULL,
  20. DATA DATE NOT NULL,
  21. godzina_od TIME NOT NULL,
  22. godzina_do TIME NOT NULL,
  23. PRIMARY KEY(grafiki_id),
  24. INDEX(numer_pracownika),
  25. CONSTRAINT fkey_grafiki_numer_pracownika FOREIGN KEY(numer_pracownika) REFERENCES pracownicy(numer_pracownika)
  26. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  27.  
  28. CREATE TABLE rejestracje_hid
  29. (
  30. rejestracje_hid_id INT NOT NULL AUTO_INCREMENT,
  31. numer_karty INT NOT NULL,
  32. godzina TIME NOT NULL,
  33. kierunek TINYINT NOT NULL,
  34. tryb TINYINT NOT NULL,
  35. czytnik TINYINT NOT NULL,
  36. PRIMARY KEY(rejestracje_hid_id),
  37. INDEX(numer_karty),
  38. CONSTRAINT fkey_rejestracje_hid_numer_karty FOREIGN KEY(numer_karty) REFERENCES grafiki(numer_karty)
  39. ) 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