【问题标题】:MYSQL | Syntax Error though everything is correctly writtenMYSQL |尽管所有内容都正确写入,但语法错误
【发布时间】:2021-06-07 11:37:59
【问题描述】:

我正在尝试使用节点 js 从我的 MySql 数据库中读取数据。我实际上已经在另一个文件中做了它,它工作正常! 我正在使用:

console.log('GuildId: ' + guildId);

let MemberCountChannel = new Map();{

connection.promise().query( guildId,
    `SELECT memberCountId FROM GuildConfigurable WHERE guildId = '${guildId}'`
).then(result => {
    MemberCountChannel.set(guildId, result[0][0].memberCountId);
    MemberCountChannelId = MemberCountChannel.get(guildId);

console.log(MemberCountChannelId);

我知道 GuildId 是正确的,因为它会在我的代码开头记录它。 执行该代码时,我得到以下信息:

GuildId: 776182101337833474
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '776182101337833474' at line 1
    at PromiseConnection.query (/home/ubuntu/discord-bot-v2/node_modules/mysql2/promise.js:92:22)
    at Timeout._onTimeout (/home/ubuntu/discord-bot-v2/counters/member-counter.js:20:26)
    at listOnTimeout (node:internal/timers:556:17)
    at processTimers (node:internal/timers:499:7) {
  code: 'ER_PARSE_ERROR',
  errno: 1064,
  sqlState: '42000',
  sqlMessage: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '776182101337833474' at line 1"
}

我已经尝试将 '${guildId}' 更改为公会 ID:

console.log('GuildId: ' + guildId);

    let MemberCountChannel = new Map();{

    connection.promise().query( guildId,
        `SELECT memberCountId FROM GuildConfigurable WHERE guildId = '776182101337833474'`
    ).then(result => {
        MemberCountChannel.set(guildId, result[0][0].memberCountId);
        MemberCountChannelId = MemberCountChannel.get(guildId);

    console.log(MemberCountChannelId);

但是使用它我得到了相同的输出。我的数据库表如下所示:

mysql> SELECT * FROM GuildConfigurable;
+--------------------+-----------+----------------+---------------+----------------+
| guildId            | cmdPrefix | radioChannelId | memberCountId | AutoStartRadio |
+--------------------+-----------+----------------+---------------+----------------+
| 776182101337833474 | <         | N/A            | N/A           | N              |
| 791351561182904381 | <         | N/A            | N/A           | N              |
| 804867729404067904 | <         | N/A            | N/A           | N              |
+--------------------+-----------+----------------+---------------+----------------+
3 rows in set (0.00 sec)

在控制台中输入时:

SELECT memberCountId FROM GuildConfigurable WHERE guildId = 776182101337833474;
or
SELECT memberCountId FROM GuildConfigurable WHERE guildId = '776182101337833474';

我得到了我需要的输出:

SELECT memberCountId FROM GuildConfigurable WHERE guildId = 776182101337833474;
+---------------+
| memberCountId |
+---------------+
| N/A           |
+---------------+
1 row in set (0.01 sec)

任何想法为什么我会收到此错误?我很确定没有语法错误。

EDIT:

我已经完全重新安装了 mysql2 和 mysql-server,并且我在另一个文件中使用了几乎相同的脚本来获取 cmdPrefix:

var guildId = message.guild.id; 
    getMemberCount(client, guildId);

    let guildCommandPrefix = new Map();
    connection.promise().query(
        `SELECT cmdPrefix FROM GuildConfigurable WHERE guildId = '${message.guild.id}'`
    ).then(result => {
        guildCommandPrefix.set(message.guild.id, result[0][0].cmdPrefix);
        prefix = guildCommandPrefix.get(message.guild.id);

而且这个很好用……

【问题讨论】:

  • 我建议记录查询,然后在像Adminer或PhpMyAdmin这样的工具下复制粘贴。检查。

标签: javascript mysql node.js discord.js


【解决方案1】:
connection.promise().query( guildId,
    `SELECT memberCountId FROM GuildConfigurable WHERE guildId = '${guildId}'`
)

你确定第一个参数应该是ID吗?它不应该是查询吗?

【讨论】:

【解决方案2】:

尝试在 SELECT 语句的末尾添加分号:

connection.promise().query( guildId,
        `SELECT memberCountId FROM GuildConfigurable WHERE guildId = '776182101337833474';`
    ).then(result => {
        MemberCountChannel.set(guildId, result[0][0].memberCountId);
        MemberCountChannelId = MemberCountChannel.get(guildId);

【讨论】:

  • 什么都没改变...它甚至没有在错误消息中显示分号...
猜你喜欢
  • 2021-03-25
  • 1970-01-01
  • 2020-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多