2014-02-25 100 views
2

我試圖用node.js插入sqlite3。我需要一個唯一的ID字段,但是我希望它自動生成,所以在插入表格時我不必插入它。 我正在連接並創建表,但是當我插入它期望我提供一個id字段。 這是迄今爲止代碼:用sqlite3和node.js插入Id字段自動增量

var sqlite3 = require('sqlite3').verbose(); 
var db = new sqlite3.Database('database/setup.db'); 


db.serialize(function() { 
db.run("CREATE TABLE items (id INTEGER PRIMARY KEY, title TEXT, images TEXT, bid INTEGER, currentBidder TEXT)"); 

var stmt = db.prepare("INSERT INTO items VALUES(?,?,?,?)"); 
stmt.run('Title test 123', 'http://testshjshs', 100, 'shane'); 
stmt.finalize(); 

db.each("SELECT rowid, title FROM test", function(err, row) { 
    console.log(row.rowid + ": " + row.title); 
}); 

}); 

db.close(); 

這是返回以下錯誤。

Error: SQLITE_ERROR: table items has 5 columns but 4 values were supplied 

我明白爲什麼它返回以下錯誤,但我如何設置它,使它插入自動插入字段或這是不可能的? 謝謝

+0

想到我自己找到了解決方案,我試圖添加它的id字段基本上與由sqlite自動添加的rowid相同。 –

回答

10

該表已被聲明爲五列,所以當您只給INSERT四個值時,它不知道哪一列要省略。

明確地說成列要插入:

INSERT INTO items(title,images,bid,currentBidder) VALUES(?,?,?,?) 

或者給所有五列的值(NULL意味着自動增量):

INSERT INTO items VALUES(NULL,?,?,?,?) 
+0

謝謝CL我會放棄這一點。 –