MySQL的#1062虽然没有在表

问题描述:

----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

这听起来不太可能(除非您按照注释中所述执行重复插入操作)。您可以尝试删除密钥或重建索引。

我最近有类似的问题。

最终它是由于bigint(在源代码中)被转换为int(在目的地)。并导致“重复条目”被插入。

如果您有类似的投射问题,那可能是您的问题。