Estoy trabajando en un proyecto de nodeJs y usando un paquete npm mysql2 para la base de datos mysql.
Mi configuración de MySql: -
let mysql = MYSQL.createConnection({ host: `${config.mysql.host}`, user: `${config.mysql.user}`, password: `${config.mysql.password}`, database: `${config.mysql.db}`, });Cuando estoy usando una consulta
async function getUsers ({pageNumber}) { // suppose pageNumber = 1 const [result] = await mysql.execute( `SELECT * FROM user LIMIT ?,20;`, [pageNumber] ); return result; }El código anterior está funcionando bien. Pero cuando trato de multiplicar cualquier número con pageNumber, arroja un error Error: Argumentos incorrectos para mysqld_stmt_execute
Ex.
async function getUsers ({pageNumber}) { // suppose pageNumber = 1 pageNumber = pageNumber * 20; // here we multiply 20 with pageNumber (20 is the row limit) const [result] = await mysql.execute( `SELECT * FROM user LIMIT ?,20;`, [pageNumber] ); return result; }el código anterior arroja el error.
Nota: el tipo de número de página es un número, no una cadena.
Por favor ayuda.
Esto parece ser un error introducido en MySQL versión 8.0.22, recibo el mismo error después de actualizar desde 8.0.19. No estoy seguro acerca de la causa o una solución adecuada, mientras tanto, estoy asignando los valores a las cadenas, según https://github.com/sidorares/node-mysql2/issues/1239#issuecomment-718471799 , que parece funcionar .
es como un error, use una interpolación como esta (sí, es una mala práctica, pero mientras tanto puede encontrar una solución):
const [result] = await mysql.execute( `SELECT * FROM user LIMIT ${pageNumber},20;` );y, si la variable es una cadena, coloque ' ' alrededor de la interpolación
`SELECT * FROM user WHERE xname = '${x}' ;`