Heim > Datenbank > MySQL-Tutorial > Warum kann ich in MySQL keine Fremdschlüsseleinschränkung hinzufügen?

Warum kann ich in MySQL keine Fremdschlüsseleinschränkung hinzufügen?

DDD
Freigeben: 2024-10-27 00:29:30
Original
288 Leute haben es durchsucht

 Why Can't I Add a Foreign Key Constraint in MySQL?

MySQL-Fremdschlüsseleinschränkungsfehler: Untersuchung der Ursache

Beim Versuch, eine Tabelle mit einer Fremdschlüsseleinschränkung in MySQL zu erstellen, kann es sein, dass Sie Ich stoße auf den kryptischen Fehler: „Fremdschlüsseleinschränkung kann nicht hinzugefügt werden.“ Dieser Fehler kann verwirrend sein, insbesondere wenn Sie sichergestellt haben, dass der Primärschlüssel in der referenzierten Tabelle vorhanden ist.

Um die Ursache dieses Fehlers zu ermitteln, führen Sie den folgenden Befehl aus:

SHOW ENGINE INNODB STATUS;
Nach dem Login kopieren

Dieser Befehl zeigt detaillierte Informationen über die InnoDB-Engine an, einschließlich Fremdschlüsseleinschränkungen und deren Fehler.

Einer der häufigsten Gründe für diesen Fehler ist eine Nichtübereinstimmung zwischen dem referenzierten Feld und dem Fremdschlüsselfeld. Sie müssen in den folgenden Aspekten übereinstimmen:

  • Engine:Beide Felder müssen dieselbe Engine verwenden, z. B. InnoDB.
  • Datentyp: Die Datentypen und Längen müssen identisch sein. Beispielsweise müssen beide Felder VARCHAR(20) oder INT(10) UNSIGNED sein.
  • Sortierung: Die Sortierung, z. B. utf8, muss identisch sein.
  • Einzigartig: Der Fremdschlüssel sollte sich auf ein Feld beziehen, das eindeutig ist (normalerweise der Primärschlüssel) in der Referenztabelle.

Eine weitere mögliche Ursache ist die Definition einer SET NULL-Bedingung für a Fremdschlüssel, auch wenn einige Spalten in der Referenztabelle NICHT NULL sind. Um diesen Fehler zu vermeiden, stellen Sie sicher, dass alle an der Fremdschlüsseleinschränkung beteiligten Spalten NICHT NULL sind.

Denken Sie daran, dass es zwar möglich ist, Fremdschlüsselprüfungen mit „set Foreign_key_checks=0“ vorübergehend zu deaktivieren, dies jedoch nur für getan werden sollte spezifische Debugging-Zwecke. Stellen Sie immer sicher, dass Fremdschlüsseleinschränkungen aktiviert sind, um die Datenintegrität in Ihrer Datenbank aufrechtzuerhalten.

Das obige ist der detaillierte Inhalt vonWarum kann ich in MySQL keine Fremdschlüsseleinschränkung hinzufügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage