3 Stimmen

MySQL: Duplizierter Eintrag für Schlüssel 2

Ich bin mir nicht sicher, was ich tue, um diesen Fehler zu verursachen. Die Abfrage:

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

Der Fehler:

#1062 - Duplicate entry '0' for key 2 

Der Tisch:

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 ;

Was mache ich falsch? Wenn ich keine nid für den neuen Eintrag angebe, wird er automatisch erhöht, richtig?

12voto

Mike Punkte 2365

Sie haben vid als eindeutiger Schlüssel. Sie haben jedoch nie einen Wert dafür festgelegt, so dass immer der Standardwert 0 verwendet wird. Der zweite Eintrag in die Tabelle verletzt die Eindeutigkeit.

5voto

Max Shawabkeh Punkte 36359

Das Problem scheint zu sein, dass vid nicht angegeben wird. Der erste Eintrag, den Sie eingeben, hat einen vid von 0 (Standardeinstellung) und die nächste versucht erneut 0 und scheitert an der UNIQUE Index. Nicht, dass nur der Primärschlüssel, nid wird automatisch erhöht.

0voto

Dave Sims Punkte 4979

Ich denke, nicht nid ist das Problem, sondern vid. Sie steht standardmäßig auf 0 und ist als eindeutig gekennzeichnet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X