Heim >Datenbank >MySQL-Tutorial >Warum gibt MySQL den Fehler „Fremdschlüsseleinschränkung ist falsch gebildet' aus?

Warum gibt MySQL den Fehler „Fremdschlüsseleinschränkung ist falsch gebildet' aus?

DDD
DDDOriginal
2025-01-19 05:55:10230Durchsuche

Why Does MySQL Throw a

Fehlerbehebung bei MySQL-Fremdschlüsseleinschränkungsfehlern

Das Erstellen einer Fremdschlüsselbeziehung in MySQL erfordert sorgfältige Beachtung der Datentypkompatibilität. Nicht übereinstimmende Datentypen oder Längen zwischen der Fremdschlüsselspalte und der referenzierten Primärschlüsselspalte führen zu einem Fehler „Fremdschlüsseleinschränkung ist falsch gebildet“.

Hier ist ein häufiges Szenario:

  • Tabelle1: Enthält eine ID Spalte (Primärschlüssel) mit einem CHAR Datentyp.
  • Tabelle2: Enthält eine IDFromTable1-Spalte, die auf die ID-Spalte von Tabelle1 verweist.

Versuch, die Fremdschlüsseleinschränkung mithilfe dieser Abfrage zu erstellen:

<code class="language-sql">ALTER TABLE `table2`  
ADD CONSTRAINT `FK1` 
FOREIGN KEY (`IDFromTable1`) REFERENCES `table1` (`ID`) 
ON UPDATE CASCADE 
ON DELETE CASCADE;</code>

schlägt fehl, wenn IDFromTable1 und ID unterschiedliche Datentypen oder Längen haben. Wenn beispielsweise IDFromTable1 VARCHAR(50) ist und ID CHAR(10) ist, wird die Einschränkung nicht erstellt.

Lösung:

Die Lösung ist unkompliziert: Stellen Sie sicher, dass die Fremdschlüsselspalte und die referenzierte Spalte genau den gleichen Datentyp und die gleiche Länge haben. Durch Anpassen der Spaltendefinitionen wird der Fehler behoben und die Fremdschlüsselbeziehung kann erfolgreich hergestellt werden.

Das obige ist der detaillierte Inhalt vonWarum gibt MySQL den Fehler „Fremdschlüsseleinschränkung ist falsch gebildet' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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