Heim >Datenbank >MySQL-Tutorial >MySQL-Fehler 150: Warum schlägt mein Fremdschlüssel fehl, obwohl die Spaltenlängen übereinstimmen?

MySQL-Fehler 150: Warum schlägt mein Fremdschlüssel fehl, obwohl die Spaltenlängen übereinstimmen?

DDD
DDDOriginal
2024-12-04 00:13:11445Durchsuche

MySQL Error 150: Why is my foreign key failing even with matching column lengths?

MySQL Errno 150: Offenlegung der Fremdschlüsseldiskrepanz

Beim Versuch, Beziehungen zwischen Tabellen herzustellen, sind Sie auf einen schwer fassbaren Fremdschlüsselfehler gestoßen Code 150. Lassen Sie uns in die Feinheiten Ihres SQL-Skripts eintauchen, um die Ursache dafür zu ermitteln Problem.

Bei näherer Betrachtung kann der Fehler auf einen grundlegenden Unterschied in den Datentypen zwischen dem Fremdschlüssel und seiner referenzierten Spalte zurückgeführt werden. Innerhalb der Tabelle „Sections“ haben Sie die Spalte „Instructor_ID“ als „varchar(10)“ definiert, während der Primärschlüssel der referenzierten Tabelle „Instructors“ „ID“ mit dem Datentyp „varchar(10)“ ist. Obwohl die Längen übereinstimmen, sind die Datentypen unterschiedlich.

Diese Diskrepanz führt zu einer Nichtübereinstimmung zwischen den Spalten, die verknüpft werden sollten. MySQL erfordert, dass die Fremdschlüsselspalte mit dem Datentyp der referenzierten Primärschlüsselspalte übereinstimmt. In diesem Fall sollten Sie die Spalte „Instructor_ID“ in der Tabelle „Sections“ so ändern, dass sie mit dem Datentyp der Spalte „ID“ in der Tabelle „Instructors“ übereinstimmt, nämlich „varchar(10).“

Sobald Sie sichergestellt haben, dass der Fremdschlüsselspaltentyp mit dem referenzierten Primärschlüsselspaltentyp übereinstimmt, sollte MySQL in der Lage sein, die Fremdschlüsselbeziehung herzustellen, ohne dass der Fehler Errno 150 auftritt.

Das obige ist der detaillierte Inhalt vonMySQL-Fehler 150: Warum schlägt mein Fremdschlüssel fehl, obwohl die Spaltenlängen übereinstimmen?. 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