Gdy pojawi się ten niejasny komunikat o błędzie, możesz znaleźć bardziej szczegółowy błąd, uruchamiając
SHOW ENGINE INNODB STATUS;
Najczęstsze powody to fakt, że podczas tworzenia klucza obcego zarówno pole, do którego istnieje odwołanie, jak i pole klucza obcego, muszą być zgodne:
- Silnik powinien być taki sam np. InnoDB
- Typ danych powinien być taki sam i mieć tę samą długość.
np. VARCHAR(20) lub INT(10) UNSIGNED - Składanie powinno być takie samo. np. utf8
- Unikalny - Klucz obcy powinien odnosić się do pola, które jest unikalne (zazwyczaj prywatne) w tabeli referencyjnej.
Inną przyczyną tego błędu jest:
Zdefiniowałeś warunek SET NULL, chociaż niektóre kolumny są zdefiniowane jako NOT NULL.