Heim  >  Artikel  >  Datenbank  >  Warum schlägt ALTER IGNORE TABLE trotz Verletzung der Integritätsbeschränkung fehl, selbst wenn IGNORE verwendet wird?

Warum schlägt ALTER IGNORE TABLE trotz Verletzung der Integritätsbeschränkung fehl, selbst wenn IGNORE verwendet wird?

Linda Hamilton
Linda HamiltonOriginal
2024-11-12 21:48:02656Durchsuche

Why Does ALTER IGNORE TABLE Fail with Integrity Constraint Violation Even When Using IGNORE?

MySQL: ALTER IGNORE TABLE schlägt aufgrund einer Verletzung der Integritätsbeschränkung fehl

Mit der ALTER-Anweisung von MySQL können Sie Tabellendefinitionen ändern, einschließlich des Hinzufügens eindeutiger Schlüssel. Die Schlüsselworterweiterung IGNORE ermöglicht das Entfernen doppelter Zeilen während dieses Vorgangs. Allerdings haben Benutzer berichtet, dass sie auch bei Verwendung von IGNORE auf Fehler „Integritätsbeschränkungsverletzung“ gestoßen sind.

Problem:
Beim Ausführen einer ALTER IGNORE TABLE-Anweisung zum Entfernen von Duplikaten basierend auf einem eindeutigen Schlüssel, Es ist immer noch ein Fehler „Integritätsbeschränkungsverletzung“ aufgetreten, der den Behauptungen der Dokumentation widerspricht, dass IGNORE diesen Fehler verhindert.

Ursache:
Die IGNORE-Schlüsselworterweiterung scheint einen Fehler in der InnoDB zu haben Engine auf bestimmten Versionen von MySQL, was zu dem Fehler führt.

Lösung:
Um dieses Problem zu umgehen, können Sie die Tabelle vorübergehend in MyISAM konvertieren, den eindeutigen Index mit IGNORE hinzufügen, und dann zurück in InnoDB konvertieren.

ALTER TABLE table ENGINE MyISAM;
ALTER IGNORE TABLE table ADD UNIQUE INDEX dupidx (field);
ALTER TABLE table ENGINE InnoDB;

Hinweis: Wenn Fremdschlüsseleinschränkungen vorhanden sind, müssen Sie diese zuerst entfernen und nach der Konvertierung erneut hinzufügen.

Das obige ist der detaillierte Inhalt vonWarum schlägt ALTER IGNORE TABLE trotz Verletzung der Integritätsbeschränkung fehl, selbst wenn IGNORE verwendet wird?. 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