Estoy desarrollando una aplicación web usando nodejs y mysql. La conexión mysql funciona bien, pero la consulta no se ejecuta y no muestra ningún error. Mi código se muestra a continuación. Por favor, ayúdame.
var mysql = require("mysql"); var con = mysql.createConnection({ host: "localhost", user: "root", password: "", database : "db" }); con.connect(function(err){ if(err){ console.log('Error connecting to Db'); return; } else { var time = Date.now(); var post = {userphone: "user", senderphone: "to1", message: "msg", time:time}; var query = con.query('INSERT INTO chat SET ?', post, function(err, result) { console.log('db added'); console.log(query.sql); }); console.log('Connection established'); } }); con.end(function(err) { // The connection is terminated gracefully // Ensures all previously enqueued queries are still // before sending a COM_QUIT packet to the MySQL server. });Si intenta imprimir el err en la conexión, muestra:
~/Documents/src : $ node testInsert.js Connection established { [Error: Cannot enqueue Query after invoking quit.] code: 'PROTOCOL_ENQUEUE_AFTER_QUIT', fatal: false } db added INSERT INTO chat SET `userphone` = 'user', `senderphone` = 'to1', `message` = 'msg', `time` = 1493132496360Claramente, la conexión de su base de datos se está cerrando antes de ejecutar la consulta. Debe mover ese bloque de conexión cercano al bloque de consulta para forzar su ejecución después de una consulta como esta:
con.connect(function(err){ console.log('Connection established'); if(err){ console.log('Error connecting to Db'); return; } else { var time = Date.now(); var post = {userphone: "user", senderphone: "to1", message: "msg", time:time}; var query = con.query('INSERT INTO chat SET ?', post, function(err, result) { if(err) console.log(err); console.log('db added'); console.log(query.sql); con.end(function(err) { // The connection is terminated gracefully // Ensures all previously enqueued queries are still // before sending a COM_QUIT packet to the MySQL server. }); }); } });Cuando lo ejecuté, la inserción fue exitosa:
~/Documents/src : $ node testInsert.js Connection established db added INSERT INTO chat SET `userphone` = 'user', `senderphone` = 'to1', `message` = 'msg', `time` = 1493132632444 mysql> SELECT * FROM chat; +-----------+-------------+---------------------+---------+ | userphone | senderphone | time | message | +-----------+-------------+---------------------+---------+ | user | to1 | 0000-00-00 00:00:00 | msg | +-----------+-------------+---------------------+---------+ 1 row in set (0.00 sec)