Bei einem größeren MySQL Projekt mit InnoDB und Referenzierung gab es einige Probleme, die ich hier einmal klären möchte. Vielleicht hilft es dem einen oder anderen ja weiter.
Zirkuläre Referenz
Diese Fehlermeldung warf mir DBDesigner4 an den Kopf, als ich versuchte den SQL Code zu exportieren. Dieser Fehler tritt auf wenn man den Haken Order Tables by Foreign Key drin lässt, und gleichzeitig zwei Tabellen hat die gegenseitig auf einander verweisen.

Beim Export kann man dieses Problem durch das Entfernen des Hakens umgehen. Allerdings nicht beim Import in den MySQL Server. Dort würde immer die Meldung erscheinen, dass die Referenzierte Tabelle vermisst wird. Das kann man mit einem SQL Befehl aber auch umgehen.
SET foreign_key_checks = 0;
Dadurch wird die Überprüfung der Referenzen temporär deaktiviert und alle Tabellen können angelegt werden. Ist das Anlegen abgeschlossen, sollte dies unbedingt wieder aktiviert werden. Ansonsten können Inkonsistenzen in der Datenbank die Folge sein.
MySQL Error Number 1005 Can’t create table
Hier gibt es viele Ursachen. Eine Liste von Ursachen gibt es im Blog VerySimple (thx!). Die Fehlermeldung enthält immer eine errno. Diese Error-Nummer kann man mit folgendem Befehl "lesbar" machen:
perror 150
Unter Linux befindet sich das Programm in $PATH und kann direkt im Terminal ausgeführt werden. Unter Windows müsste man evtl erst in das bin/ - Verzeichnis von MySQL wechseln.
Der Fehlercode 150 erzeugt die Fehlermeldung Foreign key constraint is incorrectly formed. Diese wurde durch einen FK ausgelöst, der kein NULL zuließ. Kurz das NOT NULL aus dem SQL Code entfernt und schon ging es. 