我有一个MySQL表,ID
列设置为auto_increment
。该表已包含一些值。
我需要导入大约4000个新行,在某些情况下,它们具有表中已存在的相同ID,因此MySQL返回此错误:
错误代码:1062。重复输入' 7'关键' PRIMARY'
我该如何处理?
下面我发布了一段涉及我需要导入的文件的代码:
INSERT INTO `wp_posts`
(`ID`,`post_author`,`post_date`,`post_date_gmt`,`post_content`,`post_title`,`post_excerpt`,`post_status`,...)
VALUES
(7,1,'2015-04-24 11:19:41'....);
[等等4000行]
我需要的是ID值会自动相同更改。
答案 0 :(得分:3)
如果您想在ID匹配时更新现有行,请尝试添加ON DUPLICATE KEY UPDATE
子句:
INSERT INTO wp_posts (ID, post_author, post_date, post_date_gmt, post_content,
post_title, post_excerpt, post_status, ...)
VALUES (7, 1, '2015-04-24 11:19:41', ...)
ON DUPLICATE KEY UPDATE
post_author=VALUES(post_author), post_date=VALUES(post_date),
post_date_gmt=VALUES(post_date_gmt), post_content=VALUES(post_content),
post_title=VALUES(post_title), post_excerpt=VALUES(post_excerpt),
post_status=VALUES(post_status), ...
答案 1 :(得分:0)
正如您所说,ID
字段为autoincrement
。
因此,您不需要在插入期间强制id
列。您的插入查询将autogenerate
非重复的唯一ID
INSERT INTO wp_posts (post_author,post_date,post_date_gmt,post_content,post_title,post_excerpt,post_status,...) VALUES (1,'2015-04-24 11:19:41'....)
答案 2 :(得分:0)
据我了解您的担忧,您可以使用:
INSERT INTO wp_post (ID,post_author,post_date,post_date_gmt,post_content,post_title,post_excerpt,post_status,...) VALUES (7,1,'2015-04-24 11:19:41'....) ON DUPLICATE KEY UPDATE ID = 0;
并检查id是否具有auto_increment属性。