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 (в месте назначения). И в результате чего "дубликаты записей" будут вставлены.

Если у вас есть похожие проблемы с кастингом, это может быть вашей проблемой.

Это звучит маловероятно (если только вы не выполняете повторные вставки, как указано в комментариях). Вы можете попытаться удалить ключ или перестроить индекс.

Другие вопросы по тегам