【问题标题】:MySQL: Duplicate Entry for Key 2MySQL:键 2 的重复条目
【发布时间】:2010-01-23 01:22:09
【问题描述】:

我不确定我在做什么会导致此错误。查询:

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,它会自动递增,对吗?

【问题讨论】:

    标签: sql mysql mysql-error-1062


    【解决方案1】:

    您拥有vid 作为唯一键。但是,您从未为其设置值,因此始终使用默认值 0。表中的第二个条目将违反唯一性。

    【讨论】:

      【解决方案2】:

      问题似乎在于未指定 vid。您输入的第一个条目的 vid 为 0(默认值),下一个条目将再次尝试 0 并在 UNIQUE 索引上失败。并不是只有主键 nid 会自动递增。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2011-07-13
          • 2013-05-08
          • 2012-08-18
          • 2015-09-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-01-30
          • 2018-05-02
          相关资源
          最近更新 更多