【发布时间】:2017-11-18 18:05:05
【问题描述】:
如何使用 mysql 库在 Node.js 中创建存储过程? npm包mysql是否支持创建存储过程或者这段代码有错误?这是我正在使用的 npm 库:https://www.npmjs.com/package/mysql
我正在尝试为一个开源项目自动设置数据库,以帮助新的贡献者启动并运行他们的开发环境(让我们所有人使用相同的数据库架构)。
为此,我编写了一个脚本,该脚本应该将所有命令发送到 mysql 实例以设置数据库。创建表是可行的,但创建新的存储过程总是会导致错误。当我在 MySQL Workbench 中运行命令时,创建脚本确实有效,因此问题似乎仅限于脚本。
var emails =
"CREATE TABLE emails (" +
"`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY," +
"`email` VARCHAR(2048) CHARACTER SET utf8" +
");";
var addEmail =
"DELIMITER //\n" +
"CREATE PROCEDURE addEmail(IN email VARCHAR(2048))\n" +
"BEGIN\n" +
"INSERT INTO emails (email) VALUES (email);\n" +
"END //\n" +
"DELIMITER ;";
var query = [];
query.push(emails);
query.push(addEmail);
for(var i = 0; i < query.length; i++) {
console.log(query[i]);
connection.query(query[i], function (err, rows, fields) {
if (!err) {
console.log("success"); //emails succeeds, as do other create table commands
} else {
console.log('Error while performing Query.'); //any queries that create stored procedures fail
}
});
}
从接受的答案中得到很好的建议,更正后的代码如下所示:
var addEmail =
"CREATE PROCEDURE addEmail(IN email VARCHAR(2048))\n" +
"BEGIN\n" +
"INSERT INTO emails (email) VALUES (email);\n" +
"END";
【问题讨论】:
标签: mysql node.js stored-procedures