我遇到了sqlite3不刷新到磁盘的问题。我使用的代码如下。我的总文件数超过470k,程序往往使用几个千兆字节的内存。当程序运行test.db是0字节,没有使用日志。它只有在db.close()
运行时才开始写入磁盘。
var fs = require('fs');
var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database('test.db');
db.serialize(function () {
db.run("BEGIN;");
db.run("CREATE TABLE if not exists Files (name TEXT);");
db.run("COMMIT;");
var files = fs.readdirSync("./files/");
console.log("File list completed: " + files.length);
for (var i = 0; i < files.length; i++) {
db.run("INSERT INTO Files VALUES (?);",files[i]);
}
});
db.close();
字符串
我已经尝试删除db.run("BEGIN;");
和db.run("COMMIT;");
,但它没有帮助。
臭虫
我在github上报告这是一个bug
1条答案
按热度按时间lxkprmvk1#
我认为
transaction
和db.serialize
存在问题。db.serialize
是不受控制的代码,不知道什么时候有用。尝试如下所示的控制流
字符串
如果您不需要
insert all rows or nothing
,则可以尝试下一个代码型