我过去经常为MyISAM表使用mysqlimport,没有任何问题。但是现在我想将数据导入到InnoDB表中,并面临以下问题: mysqlimport报告了以下错误,不会导入任何内容:
mysqlimport: Error: 1062, Duplicate entry '1' for key 'PRIMARY', when using table: .....。我不知道如何解决这个错误。要将数据导入的表是新创建的,没有任何数据。该表如下所示:
CREATE TABLE `member` (
`member_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID of Member',
...
PRIMARY KEY (`member_id`),
...
) ENGINE=InnoDB;我想要导入的数据包括"member_id",它在表中定义为"auto_increment“。当然,在csv文件中没有重复的'member_id‘--我已经三次检查了这个。这会不会在导入MySQL时引起任何错误.如果是这样的话:我如何解决这个问题?
MySQL服务器版本为: 5.5.8
发布于 2011-04-11 06:27:38
在玩了整个周末之后,我得出结论,mysqlimport不是用于InnoDB表的:
我可以用一个简单的1列表和一行来重现问题.我能够通过关闭自动增量并在导入后重新启用它来修复这个问题。然而,我遇到了其他问题:
mysqlimport会抱怨外键约束,并拒绝导入表,即使所有的表和行都依赖于可用的表和行。所以: mysqlimport不能工作,但是INSERT语句的数据是相同的。
解决这个问题的方法很简单,就像不使用mysqlimport一样。相反,请使用LOAD DATA INFILE语句:
mysql -u <user-name> -p<password> --host=<host> --port=<port> -e "\
USE <database-name>; \
SET FOREIGN_KEY_CHECKS = 0; \
LOAD DATA INFILE '<csv-file-name>' \
INTO TABLE <table-name> (<comma-separated-list-of-column-names>); \
SET FOREIGN_KEY_CHECKS = 1;"https://serverfault.com/questions/257673
复制相似问题