导入大文件时MySQL奇怪的问题:密钥'PRIMARY'的重复条目

时间:2012-06-12 05:21:24

标签: mysql import phpmyadmin

我的托管公司希望我从MySQL 4服务器迁移到MySQL 5.5服务器。 我的数据库相对较大,因为我的网站拥有近20万注册用户的数据。

我使用PHPMyAdmin导出了所有表格,现在我尝试将它们导入新服务器。一切都很顺利,直到我尝试导入'用户'表。有关信息,请参见以下结构:

CREATE TABLE IF NOT EXISTS `user` (
`login` varchar(32) NOT NULL DEFAULT '',
`firstname` varchar(255) NOT NULL DEFAULT '',
`lastname` varchar(255) NOT NULL DEFAULT '',
`email` varchar(255) NOT NULL DEFAULT '',
...
PRIMARY KEY (`login`),
KEY `country_code` (`country_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

没什么了不起的吧?使用PHPMyAdmin导入选项卡,我上传了SQL文件。突然间,我收到了以下错误:

#1062 - Duplicate entry 'Jobi' for key 'PRIMARY' 

我立即查询数据库并搜索登录为“Jobi”的用户名。没有比赛!

我查看了生成错误的查询并尝试手动执行...

INSERT INTO `ft_user`
  (`login`, `firstname`, `lastname`, `email`, ...)
VALUES
  ('Jobi', 'Lorem-First', 'Ipsum-Last', 'xxxxx@yyyy.com', ...);

它运作得很好!

我在我的开发机器上进行了测试并得到了同样的错误。 有人可以解释一下我在这里做错了吗?

提前谢谢你。任何帮助都非常感谢。

埃尔韦。

2 个答案:

答案 0 :(得分:1)

如果输入文件包含具有相同主键值的记录的两个副本,则可能会出现此错误,但是当事务回滚时该键将不再存在。检查输入文件是否有重复项。

答案 1 :(得分:0)

在phpMyAdmin的“设置”选项卡中,您可以尝试检查以下值:

设置 - > SQL查询 - >忽略多个语句错误 如果您使用的是CSV格式:

设置 - >导入 - > CSV - >不要中止INSERT错误 如果您使用的是SQL格式:

设置 - >出口 - > SQL - >使用忽略插入