我有以下代码
CREATE TABLE IF NOT EXISTS `abuses` (
`abuse_id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL DEFAULT '0',
`abuser_username` varchar(100) NOT NULL DEFAULT '',
`comment` text NOT NULL,
`reg_date` int(11) NOT NULL DEFAULT '0',
`id` int(11) NOT NULL,
PRIMARY KEY (`abuse_id`),
KEY `reg_date` (`reg_date`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Table with abuse reports' AUTO_INCREMENT=2 ;
此表已存在于数据库中,但是当我使用phpmyadmin导入sql文件时,会出现以下错误
--
-- Dumping data for table `probid_abuses`
--
INSERT INTO `abuses` ( `abuse_id` , `user_id` , `abuser_username` , `comment` , `reg_date` , `auction_id` )
VALUES ( 1, 100020, 'artictundra', 'I placed a bid for it more than an hour ago. It is still active. I thought I was supposed to get an email after 15 minutes.', 1338052850, 108625 ) ;
#1062 - Duplicate entry '1' for key 'PRIMARY'
我认为因为它已经存在它不会尝试创建它,为什么它会这样?
答案 0 :(得分:4)
在CREATE TABLE上,
abuse_id的AUTO_INCREMENT设置为2.MySQL现在认为1已经存在。
使用INSERT语句,您尝试插入带有记录1的abuse_id。请将CREATE_TABLE上的AUTO_INCREMENT设置为1,然后重试。
否则,请将INSERT语句中的abuse_id设置为' NULL'。
我该如何解决这个问题?
答案 1 :(得分:2)
这是因为您已经定义了'abuse_id'作为自动增量,则无需插入其值。它会自动插入。错误的来源是因为您插入了多次重复数据。主键应该是唯一的。不应重复。
您需要做的是更改插入查询,如下所示
INSERT INTO `abuses` ( `user_id` , `abuser_username` , `comment` , `reg_date` , `auction_id` )
VALUES ( 100020, 'artictundra', 'I placed a bid for it more than an hour ago. It is still active. I thought I was supposed to get an email after 15 minutes.', 1338052850, 108625 ) ;
答案 2 :(得分:1)
根据您要完成的操作,您可以在文件中将INSERT替换为INSERT IGNORE。这将避免为您尝试插入并已存在的行生成错误。
答案 3 :(得分:0)
如果您确实要插入此记录,请从`abuse_id`
语句中删除INSERT
字段和相应的值:
INSERT INTO `abuses` ( `user_id` , `abuser_username` , `comment` , `reg_date` , `auction_id` )
VALUES ( 100020, 'artictundra', 'I placed a bid for it more than an hour ago. It is still active. I thought I was supposed to get an email after 15 minutes.', 1338052850, 108625 ) ;
答案 4 :(得分:0)
在您的情况下,要插入的第一个值必须为NULL,因为它是AUTO_INCREMENT。