Heim >Datenbank >MySQL-Tutorial >Wie vermeide ich MySQL Errno 150-Fehler bei der Verwendung von Fremdschlüsseleinschränkungen?

Wie vermeide ich MySQL Errno 150-Fehler bei der Verwendung von Fremdschlüsseleinschränkungen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-21 19:37:16629Durchsuche

How to Avoid MySQL Errno 150 Errors When Using Foreign Key Constraints?

MySQL-Fremdschlüsseleinschränkungen: Vermeiden von Errno 150-Fehlern

Beim Erstellen einer Tabelle in MySQL mit Fremdschlüsseln, die auf andere Tabellen verweisen, kann es zu einem Problem kommen Fehlernummer: 150 Fehler. Um dieses Problem zu lösen, ist es wichtig, die folgenden Richtlinien einzuhalten:

  1. Stellen Sie die Tabellenreihenfolge sicher: Definieren Sie die übergeordnete Tabelle, die den Primärschlüssel enthält, bevor Sie die untergeordnete Tabelle mit dem Fremdschlüssel erstellen Referenz.
  2. Fremdschlüsselunterstützung aktivieren: Sowohl die übergeordneten als auch die untergeordneten Tabellen sollten Fremdschlüsseleinschränkungen unterstützen, normalerweise durch Verwendung des InnoDB-Speichers Engine.
  3. Spaltenschlüssel ganz links: Die referenzierten Spalten in der übergeordneten Tabelle müssen die Spalten ganz links eines Schlüssels sein, idealerweise ein PRIMÄRSCHLÜSSEL oder EINZIGARTIGER SCHLÜSSEL.
  4. Übereinstimmende Primärschlüsselreihenfolge: Die FK-Definition muss hinsichtlich der Spaltenreihenfolge und der Daten mit der PK-Definition übereinstimmen Typen.
  5. Richtige Datenausrichtung: Die PK-Spalten in der übergeordneten Tabelle und die FK-Spalten in der untergeordneten Tabelle müssen hinsichtlich Datentyp und Sortierung übereinstimmen.
  6. Kompatibilität bestehender Daten: Wenn die untergeordnete Tabelle Daten enthält, stellen Sie sicher, dass jeder FK-Spaltenwert mit einem entsprechenden Wert im PK der übergeordneten Tabelle übereinstimmt Spalten.
  7. Temporäre oder partitionierte Tabellen vermeiden:Fremdschlüsseleinschränkungen können nicht für TEMPORÄRE oder PARTITIONIERTE Tabellen definiert werden.
  8. Nullbare Spalten:Wenn ein ON Wenn die Option DELETE SET NULL verwendet wird, müssen die FK-Spalten vorhanden sein nullable.
  9. Eindeutige Einschränkungsnamen: Fremdschlüsseleinschränkungen sollten im gesamten Schema eindeutige Namen haben, um Konflikte zu vermeiden.
  10. Abhängige Fremdschlüssel: Wenn a Wenn ein fehlerhafter FK in einer anderen Tabelle vorhanden ist, die auf dasselbe Feld in der übergeordneten Tabelle verweist, stellen Sie die Konsistenz sicher, bevor Sie den neuen FK erstellen. Verwenden Sie die folgende Abfrage, um problematische FKs zu identifizieren:
SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE CONSTRAINT_SCHEMA = 'your_schema_name'
AND CONSTRAINT_NAME <> 'PRIMARY' AND REFERENCED_COLUMN_NAME IS NOT NULL;

Das obige ist der detaillierte Inhalt vonWie vermeide ich MySQL Errno 150-Fehler bei der Verwendung von Fremdschlüsseleinschränkungen?. 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