2017-06-22 51 views
2

我嘗試在數據庫中插入值時遇到了mysql表的問題。#1062 - 對'PRIMARY'鍵重複輸入'0'

我跟着這個教程

http://sqllessons.com/categories.html

和教程創建的表像表

表的代碼

create table categories 
(id  integer  not null primary key 
, name  varchar(37) not null 
, parentid integer  null 
, foreign key parentid_fk (parentid) 
     references categories (id) 
); 

錯誤 SQL查詢:編輯編輯

INSERT INTO `mydb`.`categories` (
`id` , 
`name` , 
`parentid` 
) 
VALUES (
'', 'groceries', NULL 
), (
'', 'snacks', NULL 
) 

MySQL said: Documentation 
#1062 - Duplicate entry '0' for key 'PRIMARY' 

幫我解決這個問題。

回答

6

聲明該值爲自動遞增,不要插入它。所以:

create table categories (
    id  integer  not null auto_increment primary key, 
    name  varchar(37) not null, 
    parentid integer  null, 
    foreign key parentid_fk (parentid) references categories (id) 
); 

然後:

INSERT INTO `mydb`.`categories` (`name`, `parentid`) 
    VALUES ('groceries', NULL), 
      ('snacks', NULL); 
+0

我已經評論過其他人的回答,所以我覺得有點不好評論你的評論:這個答案碰到了指責':-)' – Martin

+0

它工作的很完美。非常感謝Linoff先生。 –

0

要插入一個空值(0)兩次到現場,你說是主鍵。定義的主鍵沒有重複。

+0

請糾正你的措辭和你的語法。 – Martin

0

你需要指定主鍵AUTO_INCREMENT,無需查詢

+0

這個本身沒有解決問題[已編輯的答案解決了這個問題] – Martin

0

每一個主鍵必須是唯一的插入的「身份證」的價值。 您插入了主鍵'0'的2行。 而不是你應該插入一個ID。

編輯:Sry我的壞,ID不索引。

+0

請改正你的寫法和拼寫 – Martin

+0

插入一個索引?你能解釋一下你在說什麼嗎? – Martin

相關問題