Warum erhalte ich "ERROR 1062 (23000): Duplicate entry '4289' for key 1" auf ein update?

Diese Frage gestellt wurde in einer Reihe von verschiedenen Geschmacksrichtungen vor, aber die Antworten geliefert, in diesen Fällen also nicht zu nahe zu kommen, um mir zu helfen mein problem zu lösen.

Läuft die MySQL-version "5.0.41-community-log-MySQL Community Edition (GPL)"
Die Tabelle in der Frage beschrieben wird, wie diese (ich habe entfernt die meisten der Tabellen-definition für business-Gründen):

 Field      Type          Null     Key     Default     Extra          
 ---------  ------------  -------  ------  ----------  -------------- 
 id         bigint(20)    NO       PRI     (null)      auto_increment 
 ...
 extracted  tinyint(1)    YES              (null)                     

Wenn ich das update-SQL-Anweisung:

UPDATE transaction_tbl SET extracted = 1 WHERE id = 4289

Bekomme ich die Fehlermeldung:

ERROR 1062 (23000): Duplicate entry '4289' for key 1

Ausführung dieses select-Anweisung:

SELECT id, extracted FROM transaction_tbl WHERE id BETWEEN 4288 AND 4290

produziert dies:

 id     extracted   
 -----  ------------ 
 4288   0                
 4289   0                
 4290   0                

Habe ich gelesen, die an Orten über die Verwendung der REPARATUR auf dem Tisch, aber erhielt eine Antwort, dass "Die Speicher-engine für die Tabelle unterstützt keine Reparatur"

Ich bin ein bisschen ein Verlust. Wenn jemand kann mir helfen. Ich Liebe es, zu wissen, wie man dieses Problem beheben in einer Weise, die nicht von mir verlangen, Daten zu zerstören.

gibt es irgendwelche Trigger auf diese Tabelle?
Finden Sie den trigger mit SHOW TRIGGERS LIKE 'transaction_tbl'
Es gibt einen, aber wir wurden immer diese Fehlermeldung auf und ab, da, bevor der trigger erstellt wurde. Ich sollte erwähnt haben, dass in der Frage.
OK es ist ein weiterer Auslöser, dass ich nicht bewusst war 🙂 von Euch schreiben wollen, bis die Antwort?
Wenn es nur geschieht, um diesen Datensatz löschen und neu zu erstellen, aufnehmen, bis keine Zeilen betroffen sind mehr. DELETE FROM transaction_tbl WHERE id = 4289. Wenn das nicht hilft, vielleicht die Wiederherstellung des PK (+ index).

InformationsquelleAutor Ron Tuffin | 2011-08-18

Schreibe einen Kommentar