我正在使用nodejs 的mysql插件,到目前为止我做的一切都很棒.
但是我遇到了一个绊脚石.我创建了一个导出mysql池的MySQL提供程序:
var mysql = require('mysql'); var mysqlPool = mysql.createPool({ host : '127.0.0.1', user : 'root', password : '' }); mysqlPool.getConnection(function(err, connection) { connection.query("INSERT INTO ....
我可以选择,创建,插入等都很好,但是我遇到了一个任务,我想在一起运行一个带有大约10个不同命令的小SQL字符串.我考虑过做以下其中一项:
使用mysql对数据库执行SQL文件
运行query
并启用multipleStatements
我已经编写了一些代码来执行mysql
作为子进程,但我真的很想避免这样做:
var cp = require("child_process"); var cmdLine = "mysql --user=autobuild --password=something newdb < load.sql"; cp.exec(cmdLine, function(error,stdout,stderr) { console.log(error,stdout,stderr); });
选项二的问题是我宁愿不为每个查询启用multipleStatements,只是这个特定的一个.我考虑过创建一个新的连接,但只考虑其他方法可以做到这一点.
TL; DR? 使用NodeJS和MySQL如何在数据库中执行以下操作:
CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20) ); CREATE TABLE sofa (name VARCHAR(20), owner VARCHAR(20) ); CREATE TABLE table (name VARCHAR(20), owner VARCHAR(20) );
非常感谢任何分享他们想法的人
您可以使用名为的连接选项multipleStatements
:
// Works with the pool too. var connection = mysql.createConnection({multipleStatements: true});
然后,您可以传递以下查询:
connection.query('CREATE 1; CREATE 2; SELECT 3;', function(err, results) { if (err) throw err; // `results` is an array with one element for every statement in the query: console.log(results[0]); // [create1] console.log(results[1]); // [create2] console.log(results[2]); // [select3] });