2013-05-13 29 views
-1

----exception----MySQL的#1062雖然沒有在表

(1062, "Duplicate entry '1711076-314274483' for key 'uk_thread_mail'")

沒有這樣的數據,這是我在我的日誌打印的例外。

關鍵是UNIQUE KEY uk_thread_mail (thread_id, mail_id)

日誌,似乎在告訴我,我已經得到了元組值(thread_id單,mail_id)爲(1711076,314274483),但是當我檢查表,我無法找到任何行匹配thread_id = 1711076和mail_id = 314274483。

我真的很想知道爲什麼會發生這種情況。


我的代碼是這樣的:因爲mail_id來自另一個表的主鍵

for r, s in rs: 
    try: 
     store.execute("insert into table_x (thread_id, mail_id) values (%s, %s)", (r, s)) 
    except Exception, e: 
     print e 
     store.rollback() 
    store.commit() 

行的RS永遠不可能重複的。

+3

你在同時做多個插入嗎? – 2013-05-13 15:34:09

+0

我在想也許他'LOAD DATA INFILE'?並且該組合在文件中發生了兩次 – Stephan 2013-05-13 15:38:21

+0

我在循環中插入了數據,如rs中的r:store.execute(「insert into table_x(x,y)values(%s,%s)」,(r [0 ],r [1])); store.commit();但我不確定交易在哪裏同時提交。 – tonicbupt 2013-05-13 15:42:52

回答

0

這聽起來不太可能(除非您按照註釋中所述執行重複插入操作)。您可以嘗試刪除密鑰或重建索引。

0

我最近有類似的問題。

最終它是由於bigint(在源代碼中)被轉換爲int(在目的地)。並導致「重複條目」被插入。

如果您有類似的投射問題,那可能是您的問題。