我的 discord.js 机器人的 sql 没有/不能从我的 sqlite3 db 定义一个表
Posted
技术标签:
【中文标题】我的 discord.js 机器人的 sql 没有/不能从我的 sqlite3 db 定义一个表【英文标题】:My discord.js bot's sql doesn't/cant define a table from my sqlite3 db 【发布时间】:2021-07-28 07:57:04 【问题描述】:现在已经为此工作了大约 3 天,但我尝试过的所有方法都没有奏效。是的,我的代码/可能很草率,但似乎无法从我拥有的 data.db 中获取表格。
那里至少有一张表有我的用户名和东西,但它确定它是未定义的。
else
const pr1 = new Promise( useless =>
sql.get(`SELECT * FROM data WHERE userid ="$message.author.id"`))
.then(row =>
if (!row)
sql.run("INSERT INTO data (userid, rollsleft, registered) VALUES (?, ?, ?)", [message.author.id, 4, 1]);
db.close()
).catch(error =>
console.log(error)
sql.run("CREATE TABLE IF NOT EXISTS data (userid INTEGER, rollsleft INTEGER, registered INTEGER)")
.then(() =>
sql.run("INSERT INTO data (userid, rollsleft, registered) VALUES (?, ?, ?)", [message.author.id, 4, 1]);
db.close()
);
);
我确实遇到了一个错误。
Error: SQLITE_RANGE: column index out of range errno: 25, code: 'SQLITE_RANGE', stack: 'Error: SQLITE_RANGE: column index out of range', message: 'SQLITE_RANGE: column index out of range'
【问题讨论】:
【参考方案1】:我认为您对 better-sqlite3
的工作原理有些困惑。
首先定义你正在使用的 npm 包:
const database = require('better-sqlite3');
现在定义数据库和数据库名称 - 当您运行机器人时,这会在物理上创建一个空数据库文件。
const sql = new Database('foobar.db');
现在是向数据库文件添加一个表。
let row = sql.get('SELECT * FROM tblExample WHERE id ="$message.author.id"').run();
//runs a select query using the table name "tblExample" byval row "id"
if(!row) //i.e if the table "tblExample" doesnt exist (or if there are no rows that match) - in this case if you have set up the table in the right way it will be because the table doesn't exist
sql.prepare('CREATE TABLE IF NOT EXISTS tblExample ("id", "columns_go_here")').run();
//creates the table if it doesnt already exist
;
//then you can populate the database by using an "INSERT" statement
sql.prepare('INSERT INTO tblExample VALUES ("1111", "example")').run();
//and if you need to pull data from it use the same statement as you first used
let row = sql.get('SELECT * FROM tblExample WHERE id ="1111"').run();
//then you should be able to do
let exampleData = row.columns_go_here;
//this exampleData variable should hold the value "example" - lets console.log() it
console.log(exampleData);
//if you see "example" in your console your database is working
如果您有任何问题,请发表评论,希望过度评论有所帮助。
查看文档here
【讨论】:
以上是关于我的 discord.js 机器人的 sql 没有/不能从我的 sqlite3 db 定义一个表的主要内容,如果未能解决你的问题,请参考以下文章
即使没有任何错误,我的 discord.js 机器人也不会回复用户消息 [重复]