當我與此查詢啓動代碼,有時我可以看到所有的表中列出,有時只有一個,我總是得到這樣的錯誤:sqlite的SQLITE_MISUSE錯誤的Node.js腳本
查詢錯誤:錯誤:SQLITE_MISUSE:未知錯誤
我讀過,當SQLITE API是unproperly使用SQLITE_MISUSE發生。你能幫助我嗎,因爲我在這段代碼中找不到什麼錯誤。
編輯。我已經對代碼進行了更改以擺脫比賽問題。
與SQLITE_MISUSE wrror仍然出現該消息,但消失表的問題也沒有了。在我的疑問中比賽是這樣。
這是代碼。
var sqlite3 = require("node-sqlite3");
var fs = require('fs');
var query_count;
var init = function (response) {
var db = new sqlite3.Database("test.db", function() {
fs.readFile('./assets/sql/initDB.sql', function(err,data){
if(err) {
console.error("Could not open file: %s", err);
return;
}
var query = data.toString('utf8');
queries = query.split(";");
db.serialize(function() {
query_count = queries.length;
for(var i=0; i<queries.length; i++) {
queries[i] = queries[i].replace("\r\n","");
db.run(queries[i], function(error) {
if(error) {
console.log("Query Error: "+error);
}
query_count--;
if(query_count <= 0) {
db.close();
listAllTables(response);
}
});
}
});
});
});
};
function listAllTables(response) {
var db = new sqlite3.Database("./assets/sql/test.db", function() {
db.all("SELECT name FROM sqlite_master WHERE type = 'table'", function (error, records) {
for(var record in records) {
response.write(record+": "+records[record]+"\n");
for(var prop in records[record]) {
response.write("\t"+prop+": "+records[record][prop]+"\n");
}
}
response.end();
db.close();
});
});
}
exports.load_customers = function(response) {
init(response);
};
查詢文件initDB.sql是這樣的:
CREATE TABLE IF NOT EXISTS TemporaryAuthTokens (
authToken TEXT PRIMARY KEY NOT NULL UNIQUE,
expireDate NUMERIC NOT NULL);
CREATE TABLE IF NOT EXISTS User (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE ,
login TEXT NOT NULL ,
pass TEXT NOT NULL ,
creationDate NUMERIC NOT NULL ,
authToken TEXT NULL REFERENCES TemporaryAuthTokens(authToken)
);
我可以補充一點誤差成爲僅在初始化函數的代碼引起的(我試過init和SELECT查詢load_customers separatly)。 –