【问题标题】:SQL syntax issue with Discord bot development (mySQL 8.0)Discord 机器人开发的 SQL 语法问题 (mySQL 8.0)
【发布时间】:2018-12-05 03:45:30
【问题描述】:

我知道这个问题之前已经在这个网站上处理过,但我已经尝试了我所看到的一切,并且在某些季节没有任何效果......所以它可能更具体。再次,如果我可能遗漏了什么,我深表歉意,但我很新,并且对为什么这不起作用感到沮丧......

我的代码是这样的:

bot.on(`message`, async message => {
  if(message.author.bot) return;
  if(message.channel.type === "dm") return;

  con.query(`SELECT * FROM profile WHERE id = '${message.author.id}'`, (err, rows) => {
    if(err) throw err;

    var sql;

    if(rows.length < 1) {
      var sql = (`INSERT INTO profile (id, username) VALUES (${message.author.id}, ${message.author.tag})`);
    };

    con.query(sql, console.log);
    if (err) throw err;
    console.log("1 record inserted");
  });

我正在尝试将该人的 Discord ID 和用户名放入数据库中。我有几十种不同的代码配置,它不断给我语法错误。我注意到与我看过的其他教程相比,mySQL 8.0 的语法要求非常不同。我参考了 mySQL 网站来尝试找出我的问题。我在这个问题上花了 2 天时间,我已经走到了尽头,所以我寻求帮助!

提前感谢您的宝贵时间! :)

【问题讨论】:

    标签: javascript mysql node.js discord discord.js


    【解决方案1】:

    快速浏览一下,您的第二个查询中的引号丢失了。假设这两个字段都是字符串类型,它应该看起来像这样:

    sql = (`INSERT INTO profile (id, username) VALUES ('${message.author.id}', '${message.author.tag})'`);
    

    (如果idusername 不是字符串,而是数字类型,您可以删除相应的'。)

    【讨论】:

    • ID 是一组 18 个数字,所以我也删除了 ' 。我尝试按照您的建议进行操作,但仍然出现语法错误。我不知道我已经运行了多少次,并且在那条线上一直失败。显然有什么问题,我就是想不通……
    • " sqlMessage: '您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 \'\' 附近使用正确的语法," 当我把 ' 放在里面,但是当我没有把 ' 放在 18 位数的 id 周围时,输入“代码:'ER_WARN_DATA_OUT_OF_RANGE'”。在 mySQL/数据库中,我确实将 ID 的类型设置为 Int(18) 和 Varchar(30) 作为用户名。
    • @Zarvix 18 位数对于普通的 INT 来说太多了(大约 9 位数的大写)。尝试使用 BIGINTBIGINT UNSIGNED 作为类型(大写为 18-19 位)。
    • 这次我将类型更改为 BIGINT 后出现此错误... "code: 'ER_NO_DEFAULT_FOR_FIELD', sqlMessage: 'Field \'Name\' doesn't\'t have a default value',"在试图解决这个问题之前,我没有看到这个错误。 “名称”是我将要设置的名称,以允许服务器上的人们通过机器人提出问题并当前在数据库中设置来创建 RP 角色。回复将存储在数据库中,以方便成员在战斗时检索。所以,我最终会有 name 的值。我是否应该将 NOT NULL 更改为 NULL,直到我可以创建个人资料?
    • @Zarvix 将是一种选择。您需要在插入时为每个 NOT NULL 字段提供一些值,或者在创建表时提供​​默认值。
    猜你喜欢
    • 2021-11-17
    • 2020-07-04
    • 2021-12-12
    • 2021-02-09
    • 2020-05-15
    • 2021-04-24
    • 1970-01-01
    • 2020-12-30
    • 2021-03-24
    相关资源
    最近更新 更多