使用npm mysql模块,在windows中查询源和路径问题
我正在windows 7上使用npm mysql模块使用npm mysql模块,在windows中查询源和路径问题,mysql,node.js,Mysql,Node.js,我正在windows 7上使用npm mysql模块 connection.query(`source D:/mediapropel/wp_default_install.sql`, function (error, results, fields) { if(error) throw error; console.log("Database should be created1"); console.log('source '+ path.join(__dirname,
connection.query(`source D:/mediapropel/wp_default_install.sql`, function (error, results, fields) {
if(error) throw error;
console.log("Database should be created1");
console.log('source '+ path.join(__dirname, '..', "\/\wp_default_install.sql")+'');
res.send('');
});
我所尝试的:
'source D:/mediaprope/wp\u default\u install.sql'
'source'+path.join\uuu dirname,'..',\/\wp\u default\u install.sql+
source+D:/mediaprope/wp\u default\u install.sql
源D:/\mediaprople/\wp\u default\u install.sql
源D:/\mediaprople/\wp\u default\u install.sql/\/
错误消息:
'您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解在第1行的“source D:/mediaprope/wp_default_install.sql”附近使用的正确语法`
正如预期的那样,相同的查询直接在mysql命令行中正确运行。请告诉我哪里出了问题。如前所述,mysql模块不可能做到这一点。另外,如果您在DB管理UI中尝试使用相同的源SQL命令(如phpMyAdmin),则可以测试这一点。 我尝试在/bin/mysql可执行文件上使用child_process.exec,但由于某些原因失败。 下面是一个对我有效的黑客解决方案,您可以阅读并发送整个脚本以执行注意创建连接时的multipleStatements:true设置:
const fs = require('fs');
const {promisify} = require('util');
const mysql = require('mysql');
const connection = mysql.createConnection({
host: '[host]',
database: '[database]',
user: '[user]',
password: '[password]',
multipleStatements: true
});
const connectionQueryPromise = promisify(connection.query.bind(connection));
const dbImportScript = fs.readFileSync(path.join(__dirname, '..', 'dump.sql'));
await connectionQueryPromise(dbImportScript);
若你们得到一个关于max_allowed_数据包的错误,请检查答案