Ich habe die Tabelle nach Skript erstellt:
%Vor%Dann versuche ich einen Fremdschlüssel hinzuzufügen:
%Vor%Und erhalten Sie den folgenden Fehler:
%Vor%Was ist los?
Ich renne
%Vor%Es folgt der neueste Fremdschlüsselfehler:
%Vor%Aber es hilft mir nicht zu erkennen, was falsch ist.
Ich benutze Windows Vista, MySql 5.5.11
UPDATE:
Das Problem tritt auf, wenn ich von MySql 5.0.67 aufrüste.
Hintergrund
FEHLER 1005 (HY000): Kann 'Sandkasten der Tabelle nicht herstellen. # sql-c28_4c' (errno: 150)
Wenn Sie MySQL zu ALTER TABLE
befehlen, führt es die folgenden Schritte aus:
Problem
Ihre Anfrage schlägt in Schritt 1 fehl.
Beachten Sie, dass Tabellennamen mit Dateien verknüpft sind.
Bei Linux-Tabellennamen wird zwischen Groß- und Kleinschreibung unterschieden
Unter Windows wird nicht zwischen Groß- und Kleinschreibung unterschieden.
Antwort
Da Sie offensichtlich Linux ausführen, muss der Fall der Tabelle, auf die Sie sich beziehen, wahrscheinlich derselbe sein wie in der Definition dieser Tabelle alles kleingeschrieben.
Sie verwenden Windows, daher sollte die Groß- / Kleinschreibung kein Problem sein, vielleicht ist es das Tool, das Sie verwenden, ich hatte auch dieses Problem, und die Verwendung aller Kleinbuchstaben für Tabellennamen löste meine Probleme.
Richtige Antwort
Stellen Sie die Systemvariabel
Um dieses Problem zu lösen.
Beachten Sie, dass, wenn Sie REFERENCES
unter Windows haben, Ihre Windoze-Box in eine case sensitive Linux-Box verwandelt wird, soweit es MySQL betrifft!
Link
Ссылка
Problemumgehung gefunden.
Der Tabellenname sollte nach REFERENCES
in Kleinbuchstaben stehen.
Sieht in MySql 5.5.11 wie ein Fehler aus.
FI. phpmyadmin kann keinen Fremdschlüssel hinzufügen.
Export erzeugt auch Kleinbuchstaben Tabellenname.
MySql 5.1.56 funktioniert wie erwartet.
In meinem Fall war es aufgrund der Tatsache, dass das Feld, das ein Fremdschlüsselfeld war, einen zu langen Namen hatte, d. %Code%. Versuchen Sie es kürzer. Fehlermeldung ist in diesem Fall ein bisschen irreführend.
Auch Felddefinitionen müssen gleich sein (achten Sie auf foreign key (some_other_table_with_long_name_id)
Subtyp).
Ich hatte die selbe Ausnahme:
%Vor%Das Problem, das ich hatte, war, dass das Feld, auf das ich den Fremdschlüssel setzen wollte, nicht NULL sein durfte :) Nachdem ich herausgefunden hatte, dass es erlaubt war, null zu sein, fing alles an zu arbeiten.
Natürlich war das in der ursprünglichen Frage nicht der Fall, ich wollte nur andere über eine mögliche Lösung informieren.
Tags und Links mysql foreign-keys