Así que construí una interfaz en la que puedes completar el nombre de una película, una reseña y enviarla a una base de datos. Ahora estoy tratando de conectar una base de datos mysql que creé a index.js, para que se llene con la primera entrada. Estoy tratando de lograrlo así:
const express = require('express'); const app = express(); const mysql = require('mysql'); const db = mysql.createPool({ host: "localhost", user: "root", password:"password", database:'CRUDDatabase', }); app.get('/', (req, res) => { const sqlInsert = "INSERT INTO Movie_Reviews(movieName, movieReview) VALUES (1,'inception', 'good movie');" db.query(sqlInsert, (err, result) =>{ res.send("change done"); }); }) app.listen(3001, () => { console.log("running on port 3001") })
Pero de alguna manera, la interfaz recibe el texto que envié "Cambio hecho", pero la base de datos aún no muestra ninguna entrada. ¿Alguna idea de dónde puede estar mi error? ¿Es un error de código o tiene que ver con la configuración de mi base de datos? En mysql workbench acabo de crear una conexión predeterminada sin cambiar nada.
EDITAR: el error parece ser el siguiente: Error: ER_NOT_SUPPORTED_AUTH_MODE: el cliente no admite el protocolo de autenticación solicitado por el servidor; considere actualizar el cliente MySQL
EDITAR: El siguiente comentario aquí resolvió mi problema: Ejecute la siguiente consulta en MYSQL Workbench ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; Donde root como su usuario localhost como su URL y contraseña como su contraseña Luego ejecute esta consulta para actualizar los privilegios: privilegios de vaciado; Intente conectarse usando el nodo después de hacerlo. Si eso no funciona, inténtelo sin la parte @'localhost'.
Creo que tiene un error en su código pero no lo muestra porque no prueba en la variable err, pruebe este código para mostrar qué error está obteniendo:
const express = require('express'); const app = express(); const mysql = require('mysql'); const db = mysql.createPool({ host: "localhost", user: "root", password:"password", database:'CRUDDatabase', }); app.get('/', (req, res) => { const sqlInsert = "INSERT INTO Movie_Reviews(movieName, movieReview) VALUES (1,'inception', 'good movie');" db.query(sqlInsert, (err, result) =>{ if(err) { console.log(err); res.send(err.toString()); } res.send("change done"); }); }) app.listen(3001, () => { console.log("running on port 3001") })
Entonces, como señaló Med Amine Bejaoui en un comentario , la solución es:
Ejecute la siguiente consulta en MYSQL Workbench ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; Donde root como su usuario localhost como su URL y contraseña como su contraseña Luego ejecute esta consulta para actualizar los privilegios: privilegios de vaciado; Intente conectarse usando el nodo después de hacerlo. Si eso no funciona, inténtelo sin la parte @'localhost'.