SQLite 错误代码编号 1:语法错误
SQLite Error code number 1: Syntax Error
所以我有一个 discord.js 机器人,我正在使用 SQLite3 来存储一些静音信息。
const sqlite = require('sqlite3').verbose();
var modDb = new sqlite.Database('moderation');
modDb.serialize(function() {
modDb.run("DROP TABLE IF EXISTS mute");
modDb.run("DROP TABLE IF EXISTS ban");
modDb.run("CREATE TABLE IF NOT EXISTS mute (id INT, username TEXT, discriminator TEXT, dateBegin INTEGER, dateEnd INTEGER, modID TEXT)");
modDb.run("CREATE TABLE IF NOT EXISTS ban (id INT, username TEXT, discriminator TEXT, dateBegin INTEGER, dateEnd INTEGER, modID TEXT)");
});
然后我让代码继续处理另一个文件
const sqlite = require("sqlite3").verbose();
var db = new sqlite.Database('moderation');
db.serialize(function() {
var stmt = db.prepare(`INSERT into mute values(
${user.id},
${user.username},
${user.discriminator},
${Date.now()},
${Date.now() + muteTime},
${message.author.tag});`,
function(err) {
if (err) return console.error(err);
});
stmt.finalize();
console.log(stmt);
console.log(Date.now());
console.log(muteTime);
db.each("SELECT * FROM mute", function(err, row) {
if (err) {
console.error(err);
} else {
console.log(row);
}
});
});
db.close();
当我运行这个时,它在控制台中给我这个错误:
{ Error: SQLITE_ERROR: near "#3522": syntax error errno: 1, code: 'SQLITE_ERROR' }
#3522
指的是 message.author.tag 其中 returns 作者的名字和来自 discord api 的鉴别符。我认为这是一个语法错误,但我不知道语法错误在哪里。我做错了吗?
您没有正确地将值传递给 db.prepare
:
var stmt = db.prepare(`INSERT into mute values(?, ?, ?, ?, ?, ?);`);
stmt.run(user.id, user.username, ...)
所以我有一个 discord.js 机器人,我正在使用 SQLite3 来存储一些静音信息。
const sqlite = require('sqlite3').verbose();
var modDb = new sqlite.Database('moderation');
modDb.serialize(function() {
modDb.run("DROP TABLE IF EXISTS mute");
modDb.run("DROP TABLE IF EXISTS ban");
modDb.run("CREATE TABLE IF NOT EXISTS mute (id INT, username TEXT, discriminator TEXT, dateBegin INTEGER, dateEnd INTEGER, modID TEXT)");
modDb.run("CREATE TABLE IF NOT EXISTS ban (id INT, username TEXT, discriminator TEXT, dateBegin INTEGER, dateEnd INTEGER, modID TEXT)");
});
然后我让代码继续处理另一个文件
const sqlite = require("sqlite3").verbose();
var db = new sqlite.Database('moderation');
db.serialize(function() {
var stmt = db.prepare(`INSERT into mute values(
${user.id},
${user.username},
${user.discriminator},
${Date.now()},
${Date.now() + muteTime},
${message.author.tag});`,
function(err) {
if (err) return console.error(err);
});
stmt.finalize();
console.log(stmt);
console.log(Date.now());
console.log(muteTime);
db.each("SELECT * FROM mute", function(err, row) {
if (err) {
console.error(err);
} else {
console.log(row);
}
});
});
db.close();
当我运行这个时,它在控制台中给我这个错误:
{ Error: SQLITE_ERROR: near "#3522": syntax error errno: 1, code: 'SQLITE_ERROR' }
#3522
指的是 message.author.tag 其中 returns 作者的名字和来自 discord api 的鉴别符。我认为这是一个语法错误,但我不知道语法错误在哪里。我做错了吗?
您没有正确地将值传递给 db.prepare
:
var stmt = db.prepare(`INSERT into mute values(?, ?, ?, ?, ?, ?);`);
stmt.run(user.id, user.username, ...)