MySQL #1062 пока нет таких данных в таблице
----exception----
(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.
Я действительно хочу знать, почему это произойдет.
Мой код выглядит так:
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 никогда не могут дублироваться, поскольку mail_id происходит из первичного ключа другой таблицы.
2 ответа
У меня недавно была похожая проблема.
В конечном итоге это произошло из-за того, что bigint (в источнике) был приведен к int (в месте назначения). И в результате чего "дубликаты записей" будут вставлены.
Если у вас есть похожие проблемы с кастингом, это может быть вашей проблемой.
Это звучит маловероятно (если только вы не выполняете повторные вставки, как указано в комментариях). Вы можете попытаться удалить ключ или перестроить индекс.