【问题标题】:phpmyadmin error "#1062 - Duplicate entry '1' for key 1"phpmyadmin 错误“#1062 - 密钥 1 的重复条目 '1'”
【发布时间】:2011-03-17 17:56:45
【问题描述】:

我从数据库中删除了所有表,然后恢复(导入)备份。之后我收到error #1062 - Duplicate entry '1' for key 1

我应该重复这个过程吗?或者是其他东西?为什么会出现这个错误?

【问题讨论】:

  • 您需要从数据库中删除重复条目(是的,从备份 SQL 中删除)。
  • 不正确,这是它解释导入 SQL 的方式有问题,您不应删除任何内容。

标签: php mysql database phpmyadmin mysql-error-1062


【解决方案1】:

这表明您在表上有一个 UNIQUE 或 PRIMARY 索引,并且其中一个值存在重复值,将插入这些索引之一。

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

一种猜测是您导入的数据与表中已有的某些数据重复,即您可能没有像您认为的那样删除现有数据。但它可以是任意数量的东西。

【讨论】:

  • 我想从数据库中删除所有以前的表,并想从另一个 sql 文件中导入。
  • 我选择了所有表然后删除了。还不够吗?
  • 这也发生在我身上一次,我也删除了表格并尝试导入 csv,并最终出现此错误。在阅读了@thomasrutter 的这篇文章后,我检查了我的表数据,发现由于某种原因,单独的 csv 标头作为一条记录插入,并且在我下次尝试导入 csv 数据时导致违反唯一约束。我删除了所有记录并再次尝试,是的,它成功了!
  • 确实,我也遇到过这种情况。如果 CSV 底部有杂乱无章(即大部分空白行,其中只有注释或随机字符),也会发生这种情况
【解决方案2】:

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

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

  1. 在每个表转储开始时手动删除ADD UNIQUE INDEX 和/或PRIMARY KEY。然后创建同一个结构表,添加缺失的索引,INSERT IGNORE INTO new_tbl (SELECT * FROM tbl)
  2. 为日志中的插入语句添加INSERT IGNORE

【讨论】:

    【解决方案3】:

    要解决此问题,当您要导出数据库时,您可以尝试取消勾选“格式特定选项:”下的“不要将 AUTO_INCREMENT 用于零值”,见下图:

    【讨论】:

      【解决方案4】:

      当你从 php admin 导出你的 sql 时

      选择“自定义”作为导出方式”

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

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

      【讨论】:

      • 非常感谢 Gary,这为我解决了问题。我为此苦苦挣扎了一天多!
      • @FarhadA 很高兴有帮助!
      猜你喜欢
      • 1970-01-01
      • 2014-02-02
      • 1970-01-01
      • 2013-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-10
      • 2022-09-30
      相关资源
      最近更新 更多