Heim >Datenbank >MySQL-Tutorial >Warum erhalte ich die Meldung „Fehler im Datentyp des untergeordneten Feldes beim Hinzufügen einer Fremdschlüsseleinschränkung'?
Beheben von Fremdschlüsseleinschränkungsfehlern: „Fehler im Datentyp des untergeordneten Felds beim Hinzufügen einer Fremdschlüsseleinschränkung“
Diese Anleitung befasst sich mit dem häufigen SQL-Fehler „FEHLER 1215 (HY000): Fremdschlüsseleinschränkung kann nicht hinzugefügt werden“, wenn Fremdschlüsselbeziehungen zwischen den Tabellen „Patient“, „Appointment“ und „MedicalHistory“ erstellt werden. Die Hauptursache ist normalerweise eine Typinkongruenz zwischen den untergeordneten und übergeordneten Spalten, die an der Einschränkung beteiligt sind.
So diagnostizieren und beheben Sie das Problem:
Datentypüberprüfung: Untersuchen Sie sorgfältig die Datentypen der relevanten Spalten: Stellen Sie sicher, dass die Spalte „MedicalHistory“ in der Tabelle „Patient“ genau mit der Spalte „MedicalHistoryID“ in der Tabelle „MedicalHistory“ übereinstimmt. Stellen Sie außerdem sicher, dass die Spalte „Patient“ in der Tabelle „Termin“ genau die Spalte „PatientID“ in der Tabelle „Patient“ widerspiegelt. Selbst geringfügige Unterschiede (z. B. INT vs. SMALLINT, VARCHAR(255) vs. VARCHAR(256)) verhindern, dass die Einschränkung hinzugefügt wird.
Vorübergehende Deaktivierung der Fremdschlüsselprüfung: Bevor Sie Ihre ALTER TABLE
-Anweisungen zum Hinzufügen von Fremdschlüsseln ausführen, führen Sie SET FOREIGN_KEY_CHECKS=0;
aus. Dadurch werden Fremdschlüsselprüfungen vorübergehend deaktiviert, sodass die Tabellenerstellung in beliebiger Reihenfolge möglich ist. Denken Sie daran, sie anschließend mit SET FOREIGN_KEY_CHECKS=1;
.
Detaillierte Fehleranalyse: Verwenden Sie SHOW ENGINE INNODB STATUS;
, um den Abschnitt „LATEST FOREIGN KEY ERROR“ zu überprüfen. Dadurch werden spezifische Details zur fehlgeschlagenen Einschränkung bereitgestellt und die genaue Spalte ermittelt, die das Problem verursacht.
Anschauliches Beispiel:Wenn „MedicalHistoryID“ in der Tabelle „MedicalHistory“ als INT
definiert ist, muss „MedicalHistory“ in der Tabelle „Patient“ auch sein >, nicht INT
oder irgendein anderer Typ.SMALLINT
) nach dem Erstellen Ihrer Einschränkungen wieder zu aktivieren.SET FOREIGN_KEY_CHECKS=1;
Das obige ist der detaillierte Inhalt vonWarum erhalte ich die Meldung „Fehler im Datentyp des untergeordneten Feldes beim Hinzufügen einer Fremdschlüsseleinschränkung'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!