Error: SQLITE_ERROR: near "READD": syntax error
Error: SQLITE_ERROR: near "READD": syntax error
从昨天开始,我一直在使用旧代码,之前工作时没有任何错误和更改代码,而使用新代码时,由于无法解决的问题而编写,同样的错误。
已尝试修复旧代码
用相同的任务完成了一个新代码,代码更少,只有一个 cmd。
/* eslint-disable no-undef */
/* eslint-disable no-empty */
const Discord = require('discord.js');
const Sqlite = require('sqlite3').verbose();
const client = new Discord.Client();
const db = new Sqlite.Database('C:/Users/buett/Documents/Source/Visual Studio Code/Violet Bot/database.db', Sqlite.OPEN_CREATE | Sqlite.OPEN_READWRITE, (err) => {
if (err) {
console.error(err.message);
}
console.log('Database connected!');
});
client.on('error', (err) => {
console.error(err.message);
});
client.once('ready', () => {
console.log(`In ${client.guilds} online!`);
});
client.on('message', async (msg) => {
const prefix = "*";
const args = msg.content.slice(prefix.length).trim().split(/ +/g);
const command = args.shift().toLowerCase();
const id = args[0];
const role = args[1];
const emote = args[2]
// const emoji = args[2];
switch (command) {
case 'add':
// eslint-disable-next-line no-case-declarations
if (!msg.author.bot || msg.member.hasPermission("MANAGE_ROLES_OR_PERMISSIONS")) {
let cmd = "*add [ID] [ROLE] [EMOTE]"
if (id > 0) {
if (msg.guild.roles.find(r => r.name == role, r => r.id == role) || msg.mentions.roles.first()) {
const emoteid = emote.replace('>', '').split(':', 3).slice(2);
const emotestring = emoteid[0].toString()
console.log(emoteid)
if (msg.guild.emojis.find(e => e.id == emoteid)) {
await db.run(`CREATE TABLE [IF NOT EXISTS] READD (id INTEGER PRIMARY KEY, role TEXT, emoteid TEXT)`, (error) => {
if (!error) {
db.run(`INSERT INTO READD (id, role, emoteid) VALUES (?, ?, ?)`, [id, role, emotestring])
}
return console.error(error)
});
}
else {
let errorcmd = "EMOTE is not existing or incorrect!"
missingArgsMessage(msg, command, cmd, errorcmd)
}
}
else {
let errorcmd = "ROLE is not existing or incorrect!";
return missingArgsMessage(msg, command, cmd, errorcmd);
}
}
else {
let errorcmd = "ID muss eine Zahl sein!";
missingArgsMessage(msg, command, cmd, errorcmd);
}
}
else {
let perms = "MANAGE_ROLES_OR_PERMISSIONS";
return permsMessage(msg, perms);
}
break;
}
}).login('NDk1MjAzNDMyNzczMTg5NjMy.XUwBdQ.0HdHDSTc_SWsueymgZhLwO7Y3iQ');
function missingArgsMessage(msg, command, cmd, errorcmd) {
msg.channel.send({
embed: {
color: 0xf44336,
title: `**CMD Error:** _${command}_`,
description: `${errorcmd}`,
footer: {
icon_url: 'http://icons.iconarchive.com/icons/froyoshark/enkel/256/iTerm-icon.png',
text: 'CMD Usage >> ' + cmd
}
}
});
}
function permsMessage(msg, perms) {
msg.channel.send({
embed: {
color: 0xd50000,
title: `**PERMS ERROR:** "${perms}"`,
description: `You need more permission to do that!`
}
});
}
我预计代码将创建一个带有 id、角色和表情参数的数据库
但输出是这样的:
[Error: SQLITE_ERROR: near "READD": syntax error] {
errno: 1,
code: 'SQLITE_ERROR'
}
您需要删除查询中多余的 []
,它们在这里表明这是可选的,因此您的查询变为
await db.run(`CREATE TABLE IF NOT EXISTS READD (id INTEGER PRIMARY KEY, role TEXT, emoteid TEXT)...`
从昨天开始,我一直在使用旧代码,之前工作时没有任何错误和更改代码,而使用新代码时,由于无法解决的问题而编写,同样的错误。
已尝试修复旧代码 用相同的任务完成了一个新代码,代码更少,只有一个 cmd。
/* eslint-disable no-undef */
/* eslint-disable no-empty */
const Discord = require('discord.js');
const Sqlite = require('sqlite3').verbose();
const client = new Discord.Client();
const db = new Sqlite.Database('C:/Users/buett/Documents/Source/Visual Studio Code/Violet Bot/database.db', Sqlite.OPEN_CREATE | Sqlite.OPEN_READWRITE, (err) => {
if (err) {
console.error(err.message);
}
console.log('Database connected!');
});
client.on('error', (err) => {
console.error(err.message);
});
client.once('ready', () => {
console.log(`In ${client.guilds} online!`);
});
client.on('message', async (msg) => {
const prefix = "*";
const args = msg.content.slice(prefix.length).trim().split(/ +/g);
const command = args.shift().toLowerCase();
const id = args[0];
const role = args[1];
const emote = args[2]
// const emoji = args[2];
switch (command) {
case 'add':
// eslint-disable-next-line no-case-declarations
if (!msg.author.bot || msg.member.hasPermission("MANAGE_ROLES_OR_PERMISSIONS")) {
let cmd = "*add [ID] [ROLE] [EMOTE]"
if (id > 0) {
if (msg.guild.roles.find(r => r.name == role, r => r.id == role) || msg.mentions.roles.first()) {
const emoteid = emote.replace('>', '').split(':', 3).slice(2);
const emotestring = emoteid[0].toString()
console.log(emoteid)
if (msg.guild.emojis.find(e => e.id == emoteid)) {
await db.run(`CREATE TABLE [IF NOT EXISTS] READD (id INTEGER PRIMARY KEY, role TEXT, emoteid TEXT)`, (error) => {
if (!error) {
db.run(`INSERT INTO READD (id, role, emoteid) VALUES (?, ?, ?)`, [id, role, emotestring])
}
return console.error(error)
});
}
else {
let errorcmd = "EMOTE is not existing or incorrect!"
missingArgsMessage(msg, command, cmd, errorcmd)
}
}
else {
let errorcmd = "ROLE is not existing or incorrect!";
return missingArgsMessage(msg, command, cmd, errorcmd);
}
}
else {
let errorcmd = "ID muss eine Zahl sein!";
missingArgsMessage(msg, command, cmd, errorcmd);
}
}
else {
let perms = "MANAGE_ROLES_OR_PERMISSIONS";
return permsMessage(msg, perms);
}
break;
}
}).login('NDk1MjAzNDMyNzczMTg5NjMy.XUwBdQ.0HdHDSTc_SWsueymgZhLwO7Y3iQ');
function missingArgsMessage(msg, command, cmd, errorcmd) {
msg.channel.send({
embed: {
color: 0xf44336,
title: `**CMD Error:** _${command}_`,
description: `${errorcmd}`,
footer: {
icon_url: 'http://icons.iconarchive.com/icons/froyoshark/enkel/256/iTerm-icon.png',
text: 'CMD Usage >> ' + cmd
}
}
});
}
function permsMessage(msg, perms) {
msg.channel.send({
embed: {
color: 0xd50000,
title: `**PERMS ERROR:** "${perms}"`,
description: `You need more permission to do that!`
}
});
}
我预计代码将创建一个带有 id、角色和表情参数的数据库 但输出是这样的:
[Error: SQLITE_ERROR: near "READD": syntax error] {
errno: 1,
code: 'SQLITE_ERROR'
}
您需要删除查询中多余的 []
,它们在这里表明这是可选的,因此您的查询变为
await db.run(`CREATE TABLE IF NOT EXISTS READD (id INTEGER PRIMARY KEY, role TEXT, emoteid TEXT)...`