MySQL CREATE TABLE如果不是PHPmyadmin导入中的EXISTS

时间:2013-09-13 20:20:05

标签: mysql phpmyadmin

我有以下代码

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' 

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

5 个答案:

答案 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。这将避免为您尝试插入并已存在的行生成错误。

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

答案 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。