#1062 - 密钥'PRIMARY'重复输入'1'

时间:2013-08-02 15:44:10

标签: mysql sql phpmyadmin

我在这里完全失败了。我有两个数据库。一个在我的localhost站点上,我用于开发,一个在我的远程站点,我用于我的实时(生产)站点。我通过phpMyadmin管理它们。正如我几个月来一直在做的那样,当我需要更新实时站点时,我会转储相关数据库并从我的localhost站点导入数据库。

现在,无论我尝试什么,我都会遇到这个错误:

错误 SQL查询:

--
-- Dumping data for table `oc_address_type`
--
INSERT INTO  `oc_address_type` (  `address_type_id` ,  `address_type_name` ) 
VALUES ( 1,  'Billing' ) , ( 2,  'Shipping' ) ;

MySQL说:文档

  

#1062 - 键'PRIMARY'重复输入'1'

我尝试在我的localhost上创建一个新的空白数据库,然后导入到相同的结果中。我已经验证了所有表和索引,但在那里找不到任何错误。

任何建议,因为我完全失败,直到这个问题得到解决。

顺便说一句,我正在完全删除所有表并导入结构和数据。这一直持续到今天。

7 个答案:

答案 0 :(得分:8)

你需要使用drop语句进行转储。该表存在且已有数据,您尝试插入更多相同的数据。我不是100%肯定phpmyadmin但转储将有一个选项“添加删除表”语句

答案 1 :(得分:6)

使用“mysqldump --insert-ignore ...”将您的数据库转储到localhost上,然后尝试在您的直播计算机上使用phpmyadmin导入。

或尝试使用命令行工具连接到您的实时数据库(将数据库配置为能够首先从“localhost”以外的其他主机进行连接!)

然后你可以试试以下:

$ mysql -f -p< yourdump.sql

使用-f“force”您可以在导入期间忽略错误。这与将“--force”参数添加到“mysqlimport”相同。

答案 2 :(得分:3)

问题与您的文件有关 - 您正在尝试使用副本创建数据库 - 在文件顶部您会看到如下内容:

创建数据库,如果不存在* THE_NAME_OF_YOUR_DB *默认字符集latin1 COLLATE latin1_general_ci;使用* THE_NAME_OF_YOUR_DB *;

并且我确定你已经拥有一个具有此名称的数据库 - 在同一台服务器中 - 请检查,因为你试图覆盖!!只需更改名称或(更好)删除此行!

答案 3 :(得分:1)

对我来说,foreign_key_checks和truncate table选项很有用。

SET foreign_key_checks = 0;
TRUNCATE `oc_address_type`;
SET foreign_key_checks = 1;

运行上面的sql脚本,然后导入。

答案 4 :(得分:0)

我有同样的问题,我的问题是我有一个名为unique_id的主键列,当您尝试在该主键列中添加两个相同的值时,它会返回以下错误。< / p>

enter image description here enter image description here

主键列的数据都假设不同,因此我将1改为3,但错误消失了。

您的MySql没有损坏,就像以前的答案和评论一样。

答案 5 :(得分:0)

您需要删除任何以前覆盖的表格。如果要对所有表执行完全还原,请删除所有现有表。

答案 6 :(得分:-1)

我遇到了同样的问题,我删除了表并重建了数据库,然后解决了问题。

相关问题