Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在discordjs中找不到mysql语法错误_Javascript_Mysql_Discord.js_Mysql Error 1064 - Fatal编程技术网

Javascript 在discordjs中找不到mysql语法错误

Javascript 在discordjs中找不到mysql语法错误,javascript,mysql,discord.js,mysql-error-1064,Javascript,Mysql,Discord.js,Mysql Error 1064,我正在尝试使用mysql包在discordjs中进行sql查询。 如果在sql server中使用该查询,则该查询将完全按照预期工作, 但是我在尝试使用js中的相同查询时遇到了一个解析错误: SET @ROW_NUMBER = 0; SELECT s.level,s.exp,s.number FROM ( SELECT userID,level,exp,(@ROW_NUMBER:=@ROW_NUMBER + 1 ) AS number FROM levels ORDER BY level DE

我正在尝试使用mysql包在discordjs中进行sql查询。 如果在sql server中使用该查询,则该查询将完全按照预期工作, 但是我在尝试使用js中的相同查询时遇到了一个解析错误:

SET @ROW_NUMBER = 0; SELECT s.level,s.exp,s.number 
FROM ( SELECT userID,level,exp,(@ROW_NUMBER:=@ROW_NUMBER + 1 ) AS number FROM levels ORDER BY level DESC) AS s 
WHERE userID = "${userID}";
discordjs中的代码:

//some code...
con.query(`SET @ROW_NUMBER = 0; SELECT s.level,s.exp,s.number 
FROM ( SELECT userID,level,exp,(@ROW_NUMBER:=@ROW_NUMBER + 1 ) AS number 
FROM levels ORDER BY level DESC) AS s 
WHERE userID ="${userID}";`,(err,rows) =>{
 if(err)return console.log(err); 
//other code
我得到的错误是:

code: 'ER_PARSE_ERROR',
errno: 1064,
sqlMessage: "You have an error in your SQL syntax; check the manual that
corresponds to your MariaDB server version for the right syntax to use near 'SELECT s.level,s.exp,s.number FROM ( SELECT userID ,level ,exp ,(@ROW_NUMBER:...' at line 1",
sqlState: '42000',
index: 0,
sql: 'SET @ROW_NUMBER = 0; SELECT s.level,s.exp,s.number FROM ( SELECT
userID ,level ,exp ,(@ROW_NUMBER:=@ROW_NUMBER + 1 ) AS number FROM levels
ORDER BY level DESC) AS s WHERE userID = "258217948819357697";'

错误消息显示,连接器不允许将两个查询作为一个批次发送

将变量初始化移到FROM子句中

选择s.level、s.exp、s.number 从中选择userID、level、exp、@ROW\u NUMBER:=@ROW\u NUMBER+1作为编号 从级别中,选择@ROW\u NUMBER:=0初始变量 按级别顺序描述为s 其中userID=${userID}; 注:如果您的MariaDB版本为10.2.1或更高版本,则使用CTE中的行数窗口函数,而不是变量