2016-11-23 25 views
0

以前有人問過類似的問題,但查詢嵌入在java中,對於一個總會問這類問題的新手來說可能不那麼清楚。'rowid'列不是自動增加的

我認爲'rowid'列不是自動填充/自動遞增。表,INSERT語句和錯誤代碼如下:

CREATE TABLE T (rowid INTEGER PRIMARY KEY, c1 REAL, c2 REAL); 

insert into T values (8,9); 

錯誤代碼在我的數據庫瀏覽器是:

table T has 3 columns but 2 values were supplied: insert into T values (1,2); 

我還有其他的代碼,這是非常相似,但沒有產生這個錯誤。任何幫助是極大的讚賞!謝謝!!

回答

0

這不是一個SQLite問題,這是您的數據庫瀏覽器執行時,所有三列的值都必須始終存在的問題。

解決此問題的一種方法是在rowid列中插入NULL。這應該強制SQLite分配下一個邏輯值,這是您想要的行爲:

INSERT INTO T values (NULL, 1, 2); 
+0

使用AUTOINCREMENT不會更改錯誤代碼。此外,sqlite文檔說它應該AUTOINCREMENT一個PRIMARY KEY自動http://sqlite.org/autoinc.html謝謝! –

+1

@HanleySoilsmith我相信這是你的數據庫工具的問題。嘗試爲'rowid'插入'NULL'。 –

+0

我認爲這也是問題,但是當我使用python執行查詢時,我的python shell提供了同樣的錯誤...將查看更新sqlite3並查看是否有效。目前,使用null確實有效。感謝您的幫助<3 –