我正在运行以下SQL查询:
Executing (default): DROP PROCEDURE IF EXISTS x;
DELIMITER $$
CREATE PROCEDURE x()
BEGIN
# do something
END $$
DELIMITER; $$
像这样:
sequelize.query(query, {
type: sequelize.QueryTypes.SELECT
});
但是我得到了这个错误(即使它运行得很好,如果我使用任何其他SQL客户端):
SequelizeDatabaseError: ER_PARSE_ERROR:您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以获得正确的语法 在“DELIMITER $$”附近使用
CREATE PROCEDURE x()
BEGIN
我已将multipleStatements = true
添加到我的连接配置中,但它没有做任何事情。
更新
我最终使用了RAW
,就像这样:
sequelize.query(query, {
type: sequelize.QueryTypes.RAW
});
答案 0 :(得分:1)
您的错误实际上在最后一行。在DELIMITER之后取出$$; 声明:“DELIMITER;”将分隔符重置为“;”之后的$$会混淆语法分析器。
答案 1 :(得分:1)
DELIMITER
不是 MySQL服务器的一部分,它是 MySQL命令行客户端的一部分。该功能在驱动程序中不可用。
来源:https://github.com/mysqljs/mysql/issues/280#issuecomment-8081626