MySQL-Fehler 1022 wird durch doppelte Fremdschlüsselnamen verursacht. Die Lösung ist: 1. Verwenden Sie den Befehl „select * from INFORMATION_SCHEMA.KEY_COLUMN_USAGE where CONSTRAINT_NAME='...'“, um doppelte Fremdschlüsselnamen zu finden Schlüsselname. Benennen Sie ihn einfach.
Die Betriebsumgebung dieses Tutorials: Windows 10-System, MySQL Version 5.7, Dell G3-Computer.
Was tun, wenn MySQL-Fehler 1022 auftritt?
MySQL-Fehler Fehlercode: 1022. Es kann nicht geschrieben werden; doppelter Schlüssel in Tabelle „xxx“
Erläuterung: Dieser Fehler ist ein doppelter Fremdschlüsselname. Suchen Sie den doppelten Fremdschlüsselnamen, wo er verwendet wird sql lautet wie folgt:
select * from INFORMATION_SCHEMA.KEY_COLUMN_USAGE where CONSTRAINT_NAME='重复的外键名称'
Wenn es kein Problem gibt, benennen Sie es einfach um.
Verwandte Erweiterungen:
1 Definition des Fremdschlüssels
Ein Fremdschlüssel ist eine Spalte in einer Tabelle, die im Primärschlüssel einer anderen Tabelle enthalten ist.
Fremdschlüssel ist auch eine Art Index, der zwei Tabellen verknüpft, indem eine Spalte in einer Tabelle auf den Primärschlüssel in einer anderen Tabelle verweist.
Eine Tabelle kann einen Fremdschlüssel haben, oder es können mehrere Fremdschlüssel vorhanden sein, die mehreren Tabellen zugeordnet sind.
2 Die Rolle von Fremdschlüsseln
Die Hauptaufgabe von Fremdschlüsseln besteht darin, die Konsistenz und Integrität von Daten sicherzustellen und Datenredundanz zu reduzieren.
Dies spiegelt sich hauptsächlich in den folgenden zwei Aspekten wider:
verhindert die Ausführung
-
das Einfügen einer neuen Zeile aus der Tabelle, deren Fremdschlüsselwert nicht der Primärschlüsselwert der Haupttabelle ist, was das Einfügen verhindert.
Ändern Sie den Fremdschlüsselwert aus der Tabelle. Wenn der neue Wert nicht der Primärschlüsselwert der Haupttabelle ist, wird die Änderung blockiert.
Wenn eine Zeile aus der Master-Tabelle gelöscht wird, verhindert ihr Primärschlüsselwert das Löschen, sofern sie in der Slave-Tabelle vorhanden ist (wenn Sie sie löschen möchten, müssen Sie zuerst die relevanten Zeilen aus der Slave-Tabelle löschen).
Wenn der Primärschlüsselwert in der Master-Tabelle geändert wird, wird die Änderung verhindert, wenn der alte Wert in der Slave-Tabelle vorhanden ist (wenn Sie ihn ändern möchten, müssen Sie zuerst die relevanten Zeilen in der Slave-Tabelle löschen).
Kaskadenausführung
-
Löschen Sie Zeilen aus der Haupttabelle und löschen Sie zusammengehörige Zeilen aus der Tabelle.
Ändern Sie den Primärschlüsselwert der Haupttabelle und ändern Sie gemeinsam den Fremdschlüsselwert der zugehörigen Zeilen in der Slave-Tabelle.
3 Einschränkungen bei der Erstellung von Fremdschlüsseln
Die übergeordnete Tabelle muss bereits in der Datenbank vorhanden sein oder die Tabelle sein, die gerade erstellt wird.
Im letzteren Fall handelt es sich bei der übergeordneten Tabelle und der untergeordneten Tabelle um dieselbe Tabelle. Eine solche Tabelle wird als selbstreferenzielle Tabelle bezeichnet, und diese Struktur wird als selbstreferenzielle Integrität bezeichnet.
Der Primärschlüssel muss für die übergeordnete Tabelle definiert werden.
Die Anzahl der Spalten im Fremdschlüssel muss mit der Anzahl der Spalten im Primärschlüssel der übergeordneten Tabelle übereinstimmen.
Bei den beiden Tabellen muss es sich um InnoDB-Tabellen handeln, die derzeit keine Fremdschlüssel unterstützen.
Fremdschlüsselspalten müssen indiziert werden. MySQL 4.1.2 und spätere Versionen erstellen automatisch einen Index, wenn ein Fremdschlüssel erstellt wird. In früheren Versionen müssen Sie ihn jedoch explizit erstellen.
Die Spalten der beiden Tabellen in der Fremdschlüsselbeziehung müssen ähnliche Datentypen haben, also Spalten, die ineinander konvertiert werden können. Beispielsweise können int und tinyint verwendet werden, int und char jedoch nicht.
Empfohlenes Lernen: „
MySQL-Video-Tutorial
“
Das obige ist der detaillierte Inhalt vonWas tun bei MySQL-Fehler 1022?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!