2010-01-23 73 views
3

我不知道我在做什么来引起此错误。查询:MySQL:密钥2的重复输入

INSERT INTO node (type, language, title) VALUES ('bout', 'en', 'the title 3') 

错误:

#1062 - Duplicate entry '0' for key 2 

表:

CREATE TABLE `node` (
    `nid` int(10) unsigned NOT NULL auto_increment, 
    `vid` int(10) unsigned NOT NULL default '0', 
    `type` varchar(32) NOT NULL default '', 
    `language` varchar(12) NOT NULL default '', 
    `title` varchar(255) NOT NULL default '', 
    `uid` int(11) NOT NULL default '0', 
    `status` int(11) NOT NULL default '1', 
    `created` int(11) NOT NULL default '0', 
    `changed` int(11) NOT NULL default '0', 
    `comment` int(11) NOT NULL default '0', 
    `promote` int(11) NOT NULL default '0', 
    `moderate` int(11) NOT NULL default '0', 
    `sticky` int(11) NOT NULL default '0', 
    `tnid` int(10) unsigned NOT NULL default '0', 
    `translate` int(11) NOT NULL default '0', 
    PRIMARY KEY (`nid`), 
    UNIQUE KEY `vid` (`vid`), 
    KEY `node_changed` (`changed`), 
    KEY `node_created` (`created`), 
    KEY `node_moderate` (`moderate`), 
    KEY `node_promote_status` (`promote`,`status`), 
    KEY `node_status_type` (`status`,`type`,`nid`), 
    KEY `node_title_type` (`title`,`type`(4)), 
    KEY `node_type` (`type`(4)), 
    KEY `uid` (`uid`), 
    KEY `tnid` (`tnid`), 
    KEY `translate` (`translate`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2586 ; 

我在做什么错?通过不为新条目指定一个nid,它会自动递增,对吧?

回答

11

您有vid作为唯一键。但是,您从不为其设置值,因此始终使用默认值0。第二次进入表格将违反唯一性。

5

该问题看起来与vid没有被指定。您输入的第一个条目的vid为0(默认值),下一个将再次尝试0,并在UNIQUE索引上失败。不只是主键nid会自动增量。

0

我认为nid不是问题,vid是。它默认为0,并被指定为唯一。