2010-07-19 176 views
2

我从数据库中删除所有表,然后恢复(导入)备份。之后我得到error #1062 - Duplicate entry '1' for key 1phpmyadmin错误“#1062 - 键1的重复条目”1“

我应该重复这个过程。或者是其他东西?为什么这个错误即将到来?

+0

您将需要从数据库中删除重复条目(来自备份SQL的是)。 – 2010-07-19 08:29:46

+0

不正确,这是它解释导入的SQL的方式的一个问题,你不应该删除任何东西。 – FarhadA 2013-10-22 07:31:51

回答

5

这表示您在表上有一个UNIQUE或PRIMARY索引,并且在其中一个值中会有一个重复值,这些值将被插入到其中一个索引中。

您需要查看哪个特定操作导致此错误,以找出哪个表以及它正在尝试写入哪一行。希望phpMyAdmin 应该告诉你哪一行数据导致了这个问题,不是吗?

一个猜测是,您正在导入的数据已经在表中复制了一些数据,也就是说您可能没有像您以前那样删除现有数据。但它可能是许多事情。

+0

我想从数据库中删除所有以前的表,并希望从另一个sql文件导入。 – 2010-07-19 04:52:02

+2

我选择了所有表格然后放下。这不够吗? – 2010-07-19 05:37:35

+1

这发生在我身上以及曾经,我也放弃了表并尝试导入csv,并最终在这个错误。在阅读@thomasrutter的这篇文章后,我检查了我的表格数据,发现由于某种原因,csv头文件被单独插入为一条记录,并在下次尝试导入csv数据时导致唯一约束违规。我删除了所有记录,并再次尝试,并且它工作! – spiderman 2015-05-17 04:11:36

1

从它的声音中,转储在它所保存的查询中有一个重复条目。

虽然这不应该发生,但它发生在我身上。 为了解决这个问题,我建议两个选项:

  1. 手动删除ADD UNIQUE INDEX和/或PRIMARY KEY在每个表转储的开始。然后创建一个相同的结构表,添加缺少的指标,INSERT IGNORE INTO new_tbl (SELECT * FROM tbl)
  2. 日志
-1

要解决这个问题中添加INSERT IGNORE INSERT语句,当你要导出数据库,你可以尝试取消选中“不使用AUTO_INCREMENT零个值格式特定的选项”下的 “:”,见下图:

enter image description here

6

当你从PHP管理导出SQL

enter image description here

选择 “自定义” 作为出口法”

enter image description here

然后,而不是 '插入',选择 “更新”

这将执行更新语句和防止重复插入。

+0

的底部有粗俗的字样(即大多数空白行只有笔记或随机字符),也可能发生。非常感谢Gary,这为我解决了这个问题。我为此挣扎了一天! – FarhadA 2013-10-22 10:59:25

+1

@FarhadA很高兴帮助! – 2013-10-22 13:34:15

相关问题