Использование mariadb nodeJS-коннектора с несколькими запросами - PullRequest
0 голосов
/ 08 января 2019

У меня есть сервер под управлением Node.js, подключающийся к базе данных MariaDb. Я использую Node.js коннектор , и он отлично работает для отдельных запросов. Тем не менее, когда я пытаюсь сделать несколько запросов, это выдает эту ошибку:

{ 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();
});

Документация предлагает multipleStatements вариант, но просматривая GitHub Repo , единственные места, которые я нашел, находятся под lib / config / connection -options.js и документация GitHub . Я также заметил, что пакетный параметр , но, похоже, это специально для загрузки вставок.

Есть ли способ использовать mariadb-connector-nodejs для запуска нескольких запросов за один query вызов? Если да, что еще я могу сделать неправильно, если не работают только запросы с несколькими утверждениями?

Версия:
- MariaDb: 10.1.34-MariaDB
- Node.js: v10.14.2
- mariadb-connector-nodejs: mariadb@2.0.2-rc

1 Ответ

0 голосов
/ 10 января 2019

multipleStatements хороший вариант, но, как указывает @rolandstarke, это вариант подключения.

При использовании создания пула вы указываете пул + параметры соединения, так как пул будет обрабатывать создание соединения. см. связанную документацию

Пример:

const mariadb = require("mariadb");
const pool = mariadb.createPool({ multipleStatements: true });

pool.query("select 1; select 2")
  .then(results => {
    //select 1 results
    console.log(results[0]); //{ '1': 1 }
    //select 2 results
    console.log(results[1]); //{ '2': 2 }
  })
  .catch(err => {
    //handle error
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...