node.js sqlite3 - 动态添加行时出错

时间:2015-07-13 09:49:41

标签: javascript node.js sqlite transactions sql-insert

当我通过for循环向表中添加20个字符串时会发生此错误:

错误:SQLITE_ERROR:无法在错误(本机)的事务中启动事务

以下是相关代码:

var sqlite3 = require('sqlite3').verbose();
var Players_db = new sqlite3.Database('./db/Players');

Players_db.serialize(function() 
{
    Players_db.run("BEGIN TRANSACTION");
    Players_db.run("CREATE TABLE IF NOT EXISTS Players(string TEXT)");
    Players_db.run("COMMIT");
    console.log('Players_db init')
});

// This part is a simplification, but it shouldn't make a difference.
for (var i = 0; i < 20; i ++) 
{
    Players_db.run("BEGIN TRANSACTION");
    Players_db.run("INSERT INTO Players VALUES('"+a_string+"')");
    Players_db.run("COMMIT");
}

似乎for循环成功完成(并且数据被附加到数据库),但不久之后它就崩溃了。

1 个答案:

答案 0 :(得分:1)

试试这个

        Players_db.serialize(function() 
        {
            Players_db.run("BEGIN TRANSACTION");
            for (var i = 0; i < 20; i ++) 
            {
               Players_db.run("INSERT INTO Players VALUES('"+a_string+"')");
            }
            Players_db.run("COMMIT");
        })