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)...`