SQLITE TABLE创build错误

我正在学习一个示例来学习node.js / sqlite3,如下所示: https : //github.com/mapbox/node-sqlite3/blob/master/examples/simple-chaining.js

在这个例子中,表只有列,我想扩展它,所以表有三列 – 用户名,密码和login计数。

所以我改变了原来的代码,在这里:

function createTable() { console.log("createTable lorem"); db.run("CREATE TABLE IF NOT EXISTS lorem (info TEXT)", insertRows); } 

对此:

 function createTable() { console.log("createTable lorem"); db.run("CREATE TABLE IF NOT EXISTS lorem (info TEXT, name TEXT)", insertRows); } 

但是当试图用值填充时,我得到一个错误:

 ~:dev$ node chaining.js createDb chain createTable lorem insertRows Ipsum i events.js:72 throw er; // Unhandled 'error' event ^ Error: SQLITE_ERROR: table lorem has 1 columns but 2 values were supplied ~:dev$ 

我错误地创build表吗? 我提到了SQLITE api,以及W3school,但似乎没有表明我做的不正确。

我已经提供了我的代码如下:

 /** * Shows how to use chaining rather than the `serialize` method. */ "use strict"; var sqlite3 = require('sqlite3').verbose(); var db; function createDb() { console.log("createDb chain"); db = new sqlite3.Database('chain.sqlite3', createTable); } function createTable() { console.log("createTable lorem"); db.run("CREATE TABLE lorem (info TEXT, name TEXT)", insertRows); } function insertRows() { console.log("insertRows Ipsum i"); var stmt = db.prepare("INSERT INTO lorem VALUES (?, ?)"); for (var i = 0; i < 10; i++) { stmt.run("Ipsum " + i, "lala " + i); } stmt.finalize(readAllRows); } function readAllRows() { console.log("readAllRows lorem"); db.all("SELECT rowid AS id, info, name FROM lorem", function(err, rows) { rows.forEach(function (row) { console.log(row.id + ": " + row.info + ": " + row.name); }); closeDb(); }); } function closeDb() { console.log("closeDb"); db.close(); } function runChainExample() { createDb(); } runChainExample(); 

这听起来像表已经存在,可能从您的脚本的以前运行。 testing这个最快捷的方法就是改变你正在创build的sqlite数据库的名称。

 db = new sqlite3.Database('chain.sqlite3', createTable); 

 db = new sqlite3.Database('chain2.sqlite3', createTable); 

如果可行的话,那就是这个问题。 您也可以修改脚本,使其在创build之前首先删除表,如果存在的话。