【发布时间】:2019-06-03 08:33:15
【问题描述】:
我有一个运行 Node.js 的服务器连接到 MariaDb 数据库。我正在使用Node.js connector,它适用于单个查询。但是,当我尝试执行多个查询时,它会抛出此错误:
{ Error: (conn=8439, no: 1064, SQLState: 42000) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SELECT 2' at line 1
sql: SELECT 1; SELECT 2; - parameters:[]
at Object.module.exports.createError (\node_modules\mariadb\lib\misc\errors.js:55:10)
at Packet.readError (\node_modules\mariadb\lib\io\packet.js:506:19)
at Query.readResponsePacket (\node_modules\mariadb\lib\cmd\resultset.js:47:28)
at PacketInputStream.receivePacket (\node_modules\mariadb\lib\io\packet-input-stream.js:73:9)
at PacketInputStream.onData (\node_modules\mariadb\lib\io\packet-input-stream.js:129:20)
at Socket.emit (events.js:182:13)
at addChunk (_stream_readable.js:283:12)
at readableAddChunk (_stream_readable.js:264:11)
at Socket.Readable.push (_stream_readable.js:219:10)
at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)
fatal: false,
errno: 1064,
sqlState: '42000',
code: 'ER_PARSE_ERROR' }
我当前使用的测试代码是:
conn = await pool.getConnection({multipleStatements: true});
conn.query({
multipleStatements: true,
sql: "SELECT 1; SELECT 2;"
}).then((data: any) => {
console.log(data);
conn.end();
});
documentation 建议multipleStatements 是一个选项,但通过GitHub Repo,我发现它的唯一地方是lib/config/connection-options.js 和GitHub documentation。我还注意到了batch option,但这似乎是专门针对大量插入的。
有没有办法使用 mariadb-connector-nodejs 在单个 query 调用中运行多个查询?如果是这样,我还能做错什么,只有多语句查询不起作用?
版本:
- MariaDb:10.1.34-MariaDB
- Node.js:v10.14.2
- mariadb-connector-nodejs: mariadb@2.0.2-rc
【问题讨论】:
-
multipleStatements是一个连接选项,而不是我担心的查询选项。 -
@RolandStarke 显然我把这个选项放在除了正确的地方之外的任何地方......原来它属于
mariadb.createPool位。如果你想回答,我可以接受。