【发布时间】:2017-08-11 14:36:17
【问题描述】:
我在使用 node-sqlite3 驱动的数据库中定期存储数据的网络服务器有问题。它会正常工作几次,然后就失败了
SQLITE_BUSY:数据库被锁定
有时即使没有失败,也没有完成对数据库的所有插入,只在表中留下部分插入。
setInterval(doInserts,60000);
doInserts() {
calculateData(function(data){
if(data)
{
insertData(data);
}
});
}
function insertData(data) {
var sqlite3 = require("sqlite3").verbose();
//user fs existSync to check if file exists and openSync(file,'w') to create if not
db.serialize(function(){
var stmt = db.prepare("INSERT INTO mytable (col1,col2) values (?,?)");
for(var i =0;i<data.length;i++)
stmt.run(data[0],data[1]);
stmt.finalize();
});
db.close();
}
考虑到我对 node 和 SQLite 都是新手,我猜我以错误的方式使用了某些东西,导致多个打开的线程或进程锁定了数据库,但没有文档或研究让我更接近解决方案。
【问题讨论】: