SQLite 错误代码 1:语法错误
Posted
技术标签:
【中文标题】SQLite 错误代码 1:语法错误【英文标题】:SQLite Error code number 1: Syntax Error 【发布时间】:2017-10-03 09:20:57 【问题描述】:所以我有一个 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,它在其中返回作者的姓名和来自 discord api 的鉴别符。我认为这是一个语法错误,但我不知道语法错误在哪里。我做错了吗?
【问题讨论】:
【参考方案1】:您没有正确地将值传递给db.prepare
:
var stmt = db.prepare(`INSERT into mute values(?, ?, ?, ?, ?, ?);`);
stmt.run(user.id, user.username, ...)
【讨论】:
以上是关于SQLite 错误代码 1:语法错误的主要内容,如果未能解决你的问题,请参考以下文章
android.database.sqlite.SQLiteException:靠近“WHERE”:语法错误(Sqlite 代码 1)
android.database.sqlite.SQLiteException:在“Foreign”附近:语法错误(代码 1):
更新 SQLite - “WHERE”附近:语法错误(代码 1 SQLITE_ERROR):
android.database.sqlite.SQLiteException:靠近“编码”:语法错误(代码 1)