无法使用sequelize创建存储过程

时间:2015-05-13 13:30:56

标签: javascript mysql stored-procedures sequelize.js

我正在运行以下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
});

2 个答案:

答案 0 :(得分:1)

您的错误实际上在最后一行。在DELIMITER之后取出$$; 声明:“DELIMITER;”将分隔符重置为“;”之后的$$会混淆语法分析器。

答案 1 :(得分:1)

DELIMITER不是 MySQL服务器的一部分,它是 MySQL命令行客户端的一部分。该功能在驱动程序中不可用。

来源:https://github.com/mysqljs/mysql/issues/280#issuecomment-8081626