2012-06-01 41 views
1

我想在已經有3行的表中插入一個元素。主鍵是否可能不是自動增量?

它的表中調用USUARIOS = [ID(伯,自動增量),FID如first_name姓氏.. ..]

所以已經有3排與編號的:0,1,2

而當我試圖執行此查詢(注意我沒有設置值id屬性)

INSERT INTO usuarios (fid,email,pass,first_name,last_name,avatar,bday,fecha,id_loc,id_loc_from) 
     VALUES  (-1,'[email protected]','72253f579e7dc003da754dad4bd403a6','','','',NOW(),NOW(),'','') 

我得到這個MySQL錯誤:

Duplicate entry '0' for key 1 

多餘的:我不知道這個3項,其中插入(如果通過接口,由主機查詢,..)

所以問題是,我怎樣才能確保Primary Key是自動增量,如果不是;如何設置它? (將是解決問題嗎?)

+0

沒有其他鍵比主要.. –

+0

你能提供這個表的實際表模式? –

+1

啊,是有各種主鍵。也許種子在這張桌子上重置?所以它認爲下一個自動增量編號應該是零... – dotjoe

回答

1

你應該能夠使用這種說法,如果你有權利修改表將其設置爲自動遞增:

ALTER TABLE usuarios modify id INT(11) NOT NULL AUTO_INCREMENT; 

雖然我見過的bug報告如果上述內容因某些原因不起作用,建議您放棄並重新創建它。在這些職位的推薦語法是:

ALTER TABLE usuarios 
     DROP COLUMN id; 

ALTER TABLE usuarios 
     ADD COLUMN idINT(11) NOT NULL AUTO_INCREMENT FIRST; 

警告:在測試數據庫首先要做的事。如果表使用這個作爲外鍵,你會小心這樣做。它最多可能會失敗,或在最壞的情況下打破所有關係。

有大量的信息在MySql reference manual

+0

如果你想從3開始,那麼在AUTO_INCREMENT之後加上「= 3」。 –

+0

(第一個查詢)您的SQL語法有錯誤;檢查對應於你的MySQL服務器版本的手冊,在第1行附近使用'= 3'的正確語法___任何想法爲什麼?我正在使用root用戶 –

+0

我認爲「= 3」不正確。我之所以加上它是因爲傑里米古德爾的筆記。我沒有MySql數據庫,現在我正在測試它,但根據我已閱讀過的文檔,「= 3」在該語句中是***不正確。如果我沒有弄錯,你可以使用上面的第一條語句按照ALTER TABLE usuarios AUTO_INCREMENT = 2;這將增量onteh表重置爲2的CURRENT值,因此插入的NEXT記錄將爲3.對不起,我的優勢是SQL Server。我在業餘時間學習MySql,所以我很弱。我正在學習。 – David