【发布时间】: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