Objetivo: Hacer una consulta simple a la base de datos.
Resultados esperados: "¡por favor imprima algo!" y los resultados de la consulta se imprimen en el terminal.
Resultados reales: No se imprime nada en el terminal.
Errores : Ningún mensaje de error.
Aquí está el archivo db.js :
var mysql = require('mysql'); var connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'root', database: 'todoDB' }); connection.connect(); connection.query('SELECT * FROM categories', function (err, res, fields) { console.log("please print something!") if (err) throw err; console.log(res); }); connection.end();Ejecuto este archivo usando:
node db.jsEn mysql cli, puedo hacer esta consulta sin ningún problema con el nombre de la base de datos, las credenciales y la consulta que se indica arriba.
Sé que connection.connect() funciona porque cuando ingreso el código a continuación, el terminal imprime "¡La base de datos está conectada!" Creo que el problema ocurre en connection.query , pero no estoy seguro de por qué.
connection.connect(function(err){ if(!err){ console.log("Database is connected"); } else { console.log("Error while connecting with database"); console.log(err); } });Revisé todas las preguntas relacionadas en stackoverflow y las probé, pero ninguna de las soluciones parece resolver el problema que tengo.
Entonces parece que mySQL V8 usa caching_sha2_password como el nuevo estándar de autenticación, que el complemento nodeJS no admite. Conéctese a su base de datos e intente crear un nuevo usuario que use el tipo de autenticación de contraseña nativa.
CREATE USER 'foo'@'localhost' IDENTIFIED WITH mysql_native_password BY 'bar';