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永远不可能重复的。
答
这听起来不太可能(除非您按照注释中所述执行重复插入操作)。您可以尝试删除密钥或重建索引。
答
我最近有类似的问题。
最终它是由于bigint(在源代码中)被转换为int(在目的地)。并导致“重复条目”被插入。
如果您有类似的投射问题,那可能是您的问题。
你在同时做多个插入吗? – 2013-05-13 15:34:09
我在想也许他'LOAD DATA INFILE'?并且该组合在文件中发生了两次 – Stephan 2013-05-13 15:38:21
我在循环中插入了数据,如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