Heim  >  Artikel  >  Datenbank  >  Warum erhalte ich den MySQL-Fremdschlüsselfehler 1215: „Fremdschlüsseleinschränkung kann nicht hinzugefügt werden'?

Warum erhalte ich den MySQL-Fremdschlüsselfehler 1215: „Fremdschlüsseleinschränkung kann nicht hinzugefügt werden'?

Susan Sarandon
Susan SarandonOriginal
2024-11-25 14:08:13823Durchsuche

Why Am I Getting MySQL Foreign Key Error 1215:

Fehlerbehebung bei MySQL-Fremdschlüsselfehler: 1215

Beim Versuch, eine Fremdschlüsseleinschränkung in MySQL hinzuzufügen, wird möglicherweise der Fehlercode 1215 angezeigt „Fremdschlüsseleinschränkung (Fremdschlüssel) kann nicht hinzugefügt werden.“ Dieser Fehler tritt typischerweise aufgrund von Datentypkonflikten oder strukturellen Problemen auf.

Datentypkonflikt

Eine mögliche Ursache ist eine Nichtübereinstimmung der Datentypen zwischen der Spalte, die auf den Fremdschlüssel verweist und die referenzierte Spalte. Wenn beispielsweise die Spalte „classLeader“ in der Klassentabelle den Datentyp VARCHAR(255) hat, während die referenzierte Spalte „studentID“ in der Tabelle „student“ ein INT ist, schlägt die Fremdschlüsseleinschränkung fehl. Die Datentypen beider Spalten müssen identisch sein.

Strukturelle Probleme

Wenn die Datentypen übereinstimmen, kann das Problem in strukturellen Diskrepanzen zwischen den Tabellen liegen. Insbesondere:

  • Die referenzierte Tabelle (in diesem Fall student) muss vorhanden sein.
  • Die referenzierte Spalte (studentID) muss in der referenzierten Tabelle vorhanden sein.
  • Die referenzierte Die Spalte (studentID) sollte der Primärschlüssel oder der eindeutige Schlüssel der referenzierten Tabelle sein (in MySQL kann dies jedoch auch ein Index sein). genügen).

Beispiel

-- Create student table
CREATE TABLE student (
  studentID int NOT NULL AUTO_INCREMENT,
  lastName varchar(255),
  firstName varchar(255),
  PRIMARY KEY (studentID)
);

-- Create class table
CREATE TABLE class (
  classID int NOT NULL AUTO_INCREMENT,
  nameClass varchar(255),
  classLeader int,  -- Change to INT to match studentID type
  FOREIGN KEY (classLeader) REFERENCES student(studentID),
  PRIMARY KEY (classID)
);

Fremdschlüssel vs. Schlüssel

Fremdschlüssel werden nicht berücksichtigt Traditionelle Schlüssel (z. B. Primärschlüssel oder eindeutige Schlüssel), die Zeilen innerhalb einer Tabelle eindeutig identifizieren. Stattdessen besteht ihr Hauptzweck darin, die referenzielle Integrität sicherzustellen und Beziehungen zwischen Tabellen aufrechtzuerhalten. Durch die Durchsetzung von Fremdschlüsseln können Sie Inkonsistenzen und verwaiste Daten verhindern.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich den MySQL-Fremdschlüsselfehler 1215: „Fremdschlüsseleinschränkung kann nicht hinzugefügt werden'?. 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