我从数据库中删除了所有表,然后恢复(导入)备份。之后我得到error #1062 - Duplicate entry '1' for key 1
。
我应该重复这个过程吗?或者是其他东西?为什么会出现这个错误?
答案 0 :(得分:7)
从php admin导出sql时
选择“自定义”作为导出方法“
然后,选择“更新”
,而不是“插入”这将执行update-statements并防止重复插入。
答案 1 :(得分:5)
这表示您在表上有一个UNIQUE或PRIMARY索引,并且其中一个值将有一个重复值插入到其中一个索引中。
您需要查看导致此错误的特定操作,以找出它尝试写入哪个表和哪一行。希望phpMyAdmin 应该告诉你哪一行数据导致了这个问题,不应该吗?
有一种猜测是,您正在导入复制表中已有数据的数据,即您可能没有像您认为的那样删除现有数据。但它可以是任何数量的东西。
答案 2 :(得分:1)
如果声音如此,转储在其拥有的查询中有一个重复的条目。
虽然这不应该发生,但过去发生在我身上。 为了解决这个问题,我建议两个选择:
ADD UNIQUE INDEX
和/或PRIMARY KEY
。然后创建一个相同的结构表,添加缺少的索引,并INSERT IGNORE INTO new_tbl (SELECT * FROM tbl)
INSERT IGNORE
醇>
答案 3 :(得分:-1)
要解决此问题,当您要导出数据库时,您可以尝试在“格式特定选项:”下取消选中“不要将AUTO_INCREMENT用于零值”,请参见下图: