es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Consulta de múltiples declaraciones no funciona con el Conector de ClusterPool de MariaDB en NodeJS.

Configuré Mariadb Galera Cluster, todo funciona bien.

Las consultas individuales funcionan bien con PoolCluster. Pero tengo un problema con consultas de múltiples instrucciones.

Intenté encontrar la configuración “multiStatements: true” en las opciones de poolCluster, pero no pude encontrar nada.

Código:

const mariaDB = require('mariadb');
const cluster = mariaDB.createPoolCluster();
cluster.add('primary', { host: '10.0.0.230', user: 'user', password: '***', connectionLimit: 10 });
cluster.add('replica1', { host: '10.0.0.231', user: 'user', password: '***', connectionLimit: 10 });
cluster.add('replica2', { host: '10.0.0.231', user: 'user', password: '***', connectionLimit: 10 });
const conn = await cluster.getConnection('slave*', 'RR');
let result = await conn.query("SELECT * from tableA; Select * from tableB");

Error: Error: (conn=8302, no: 1064, SQLState: 42000) Tienes un error en la sintaxis de tu SQL; revisa el manual que corresponde a la versión de tu servidor MariaDB para saber la sintaxis correcta a usar cerca de.

Nota: Todas las consultas de múltiples instrucciones funcionan bien con la conexión “Pool”.

Muchas gracias de antemano.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que hay un problema al ejecutar consultas con múltiples declaraciones utilizando Mariadb Galera Cluster con PoolCluster. El usuario ha intentado encontrar una opción de configuración para multiStatements: true en las opciones de poolCluster, pero no encontró nada.

    Una posible solución es establecer la opción multiStatements en true en la configuración de la conexión.

    const conn = await cluster.getConnection('slave*', "RR");
    conn.config.multiStatements = true; // establecer multiStatements en true
    let result = await conn.query("SELECT * from tableA; Select * from tableB");
    

    Alternativamente, el usuario puede utilizar la conexión regular del Pool para ejecutar consultas con múltiples declaraciones.

    const pool = mariaDB.createPool({
      host: 'localhost',
      user: 'root',
      password: 'password',
      database: 'test',
      multiStatements: true // establecer multiStatements en true
    });
    let result = await pool.query("SELECT * from tableA; Select * from tableB");
    

    Esperemos que una de estas soluciones permita al usuario ejecutar consultas con múltiples declaraciones con Mariadb Galera Cluster.

Comments are closed.