错误代码:1062。更新语句中键“key_id”的重复条目“####”

我正在尝试更新表中的记录,并引发以下错误:

Error Code: 1062. Duplicate entry '5452' for key 'device_id'

update device_info set  serial_number = '728015162815' , ip_address = '192.168.77.121'   , location_code = '1', battery_status = 'Not Charging : 36%'       
where device_id = 5452

这里发生了什么?我可以在 insert 上理解这个错误,但这是在 update 语句 上抛出的。

stack overflow Error Code: 1062. Duplicate entry '####' for key 'key_id' on update statement
原文答案
author avatar

接受的答案

作为记录,上面的评论显示了解决方案。

鉴于您运行的 SQL 语句,看似不可能的神秘错误可能是由另一个 SQL 语句引起的。这怎么会发生?它可以由您的 UPDATE 生成的触发器运行。

触发器可能正在向其他表中插入一行,从而导致重复键错误。或者触发器可能更改正在更新的当前行的唯一列中的值,这也可能导致相同的错误。

这将向您展示存在哪些触发器:

SHOW TRIGGERS;

答案:

作者头像

在我的例子中,我遇到了类似的错误,但问题不是由触发器或其他操作引起的。这是由于堆表大小不足。

我不得不按如下方式增加尺寸

[mysqld]
tmp_table_size = 265M
max_heap_table_size = 265M

灵感来自: MySQL: 1062 Duplicate entry ‘’ for key ‘group_key