Heim > Datenbank > MySQL-Tutorial > Wie behebe ich den Fehler „Fremdschlüsseleinschränkung kann nicht hinzugefügt werden' in MySQL?

Wie behebe ich den Fehler „Fremdschlüsseleinschränkung kann nicht hinzugefügt werden' in MySQL?

Barbara Streisand
Freigeben: 2025-01-18 20:17:12
Original
886 Leute haben es durchsucht

How to Troubleshoot

MySQL Foreign Key Constraint Error Troubleshooting Guide

Einführung

Beim Festlegen von Fremdschlüsseleinschränkungen für Tabellen in der Datenbank können beim Erstellen oder Ändern Fehler auftreten. Ein solcher Fehler ist „FEHLER 1215 (HY000): Fremdschlüsseleinschränkung kann nicht hinzugefügt werden“.

Fall: Probleme mit Fremdschlüsseleinschränkungen in Patienten- und Termintabellen

Bei der folgenden SQL-Abfrage ist beim Versuch, eine Fremdschlüsseleinschränkung zu den Patienten- und Termintabellen hinzuzufügen, ein Fehler aufgetreten:

<code class="language-sql">CREATE TABLE IF NOT EXISTS `doctorsoffice`.`Patient` (
...
  CONSTRAINT `FK_MedicalHistory`
    FOREIGN KEY (`MedicalHistory`)
    REFERENCES `doctorsoffice`.`medicalhistory` (`MedicalHistoryID`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `FK_PrimaryPhysician`
    FOREIGN KEY (`PrimaryPhysician`)
    REFERENCES `doctorsoffice`.`doctor` (`DoctorID`)
    ON DELETE CASCADE
    ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS `doctorsoffice`.`Appointment` (
...
  CONSTRAINT `FK_Patient`
    FOREIGN KEY (`Patient`)
    REFERENCES `doctorsoffice`.`Patient` (`PatientID`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `FK_Doctor`
    FOREIGN KEY (`Doctor`)
    REFERENCES `doctorsoffice`.`doctor` (`DoctorID`)
    ON DELETE CASCADE
    ON UPDATE CASCADE
);</code>
Nach dem Login kopieren

Lösung: Überprüfen Sie die Datentypkompatibilität

Um dieses Problem zu beheben, überprüfen Sie, ob die Datentypen der an der Fremdschlüsseleinschränkung beteiligten Spalten kompatibel sind. Stellen Sie in diesem Fall sicher:

  • Der Datentyp der MedicalHistory-Spalte in der Patiententabelle stimmt genau mit der MedicalHistoryID-Spalte in der Medicalhistory-Tabelle überein, d. h. beide sollten vom Typ INT sein.
  • Der Datentyp der Spalte „PrimaryPhysician“ in der Tabelle „Patient“ stimmt mit dem Datentyp der Spalte „DoctorID“ in der Tabelle „Doctor“ überein. Beide sollten vom Typ SMALLINT sein.

Nachdem Sie diese Datentypkonflikte korrigiert haben, können Sie die Fremdschlüsseleinschränkung erfolgreich hinzufügen.

Zusätzlicher Tipp: Deaktivieren Sie die Fremdschlüsselprüfung

Um beim Erstellen von Tabellen in einer bestimmten Reihenfolge mehr Flexibilität zu bieten, sollten Sie den folgenden Befehl verwenden, bevor Sie die SQL-Abfrage ausführen:

<code class="language-sql">SET foreign_key_checks=0;</code>
Nach dem Login kopieren

Dieser Befehl deaktiviert vorübergehend die Fremdschlüsselprüfung, sodass Tabellen unabhängig von Abhängigkeiten zwischen übergeordneten und untergeordneten Tabellen erstellt werden können. Nachdem die Tabelle erstellt wurde, kann die Fremdschlüsselprüfung mit dem folgenden Befehl wieder aktiviert werden:

<code class="language-sql">SET foreign_key_checks=1;</code>
Nach dem Login kopieren

Durch Befolgen dieser Richtlinien können Sie sicherstellen, dass Fremdschlüsseleinschränkungen korrekt in Ihrer Datenbank implementiert werden, wodurch Fehler verhindert und die Datenintegrität gewahrt bleibt.

Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „Fremdschlüsseleinschränkung kann nicht hinzugefügt werden' in MySQL?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage