9

我有以下代码

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' 

我想因为它已经存在它不会尝试创建它,为什么它会这样?

4

5 回答 5

4

在创建表上,

abuse_id 的 AUTO_INCREMENT 设置为 2。MySQL 现在认为 1 已经存在。

使用 INSERT 语句,您尝试插入带有记录 1 的 abuse_id。请将 CREATE_TABLE 上的 AUTO_INCREMENT 设置为 1,然后重试。

否则将 INSERT 语句中的 abuse_id 设置为“NULL”。

我该如何解决这个问题?

于 2016-06-21T12:34:39.153 回答
2

这是因为您已经将“abuse_id”定义为自动增量,因此无需插入其值。它将自动插入。错误的出现是因为您多次插入 1 即重复数据。主键应该是唯一的。不应重复。

您要做的就是更改您的插入查询,如下所示

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 ) ;
于 2014-12-29T09:20:23.850 回答
1

根据您想要完成的任务,您可以在文件中将 INSERT 替换为 INSERT IGNORE。这将避免为您尝试插入且已存在的行生成错误。

请参阅http://dev.mysql.com/doc/refman/5.5/en/insert.html

于 2013-09-13T23:26:04.550 回答
0

在您的情况下,要插入的第一个值必须为 NULL,因为它是 AUTO_INCREMENT。

于 2015-02-15T23:25:35.023 回答
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 ) ;
于 2013-09-13T20:28:13.837 回答