我试图用node.js插入sqlite3。我需要一个唯一的id字段,但我希望它自动生成,所以我不必插入时插入到表。
我正在连接并创建表,但当我插入时,它希望我提供一个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

我理解它为什么返回以下错误,但我如何设置它以便它插入自动插入字段,或者这是不可能的?
谢谢

最佳答案

该表声明了五列,因此当您只为insert提供四个值时,它不知道要忽略哪一列。
或者明确指出要插入的列:

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

或为所有五列指定一个值(空表示自动递增):
INSERT INTO items VALUES(NULL,?,?,?,?)

10-07 19:22
查看更多