Heim  >  Artikel  >  Datenbank  >  Warum erhalte ich den MySQL-Fehler 1022: „Kann nicht schreiben; doppelter Schlüssel in der Tabelle.“ Obwohl ich nur einen Schlüssel habe?

Warum erhalte ich den MySQL-Fehler 1022: „Kann nicht schreiben; doppelter Schlüssel in der Tabelle.“ Obwohl ich nur einen Schlüssel habe?

Barbara Streisand
Barbara StreisandOriginal
2024-11-01 14:26:29119Durchsuche

 Why Am I Getting MySQL Error 1022:

MySQL-Fehler 1022: Eine Kollision von Fremdschlüsselnamen

Beim Versuch, eine Tabelle mit MySQL zu erstellen, stoßen Sie auf Fehler 1022: „Schreiben nicht möglich; doppelter Schlüssel.“ in der Tabelle.“ Das Besondere daran ist, dass die Tabelle nur einen einzigen Schlüssel definiert, der Fehler jedoch weiterhin besteht.

Bei der Untersuchung scheint es, dass ein bestimmter Ausschnitt innerhalb der Tabellendefinition den Fehler auslöst:

<code class="sql">CONSTRAINT `error_id`
FOREIGN KEY (`error_id` )
REFERENCES `mydb`.`errors` (`error_id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,</code>

Während ähnliche Fremdschlüsseldefinitionen problemlos in anderen Tabellen vorhanden sind, liegt das Problem im Namen des Fremdschlüssels: error_id.

Die Grundursache:

Das Problem entsteht, weil ein Fremdschlüsselname nicht mit einem anderen Fremdschlüsselnamen im gesamten Datenbankmodell identisch sein kann. Das bedeutet, dass, wenn zwei Tabellen auf dieselbe Tabelle verweisen, die Fremdschlüssel in jeder Tabelle eindeutige Namen haben müssen.

Lösung:

Um den Fehler zu beheben, geben Sie einfach die ein Der betreffende Fremdschlüssel hat einen anderen Namen. Sie könnten es beispielsweise fk_error_id nennen. Dadurch wird er von jedem anderen Fremdschlüssel im Modell unterschieden und MySQL kann die Tabelle erfolgreich erstellen.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich den MySQL-Fehler 1022: „Kann nicht schreiben; doppelter Schlüssel in der Tabelle.“ Obwohl ich nur einen Schlüssel habe?. 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