mysql 插入在 Node js 中不起作用

标签 mysql node.js

我正在使用nodejs和mysql开发一个网络应用程序。 mysql 连接工作正常,但查询未执行且未显示任何错误。我的代码如下所示。请帮助我。

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.
});

最佳答案

如果您尝试在显示的连接中打印err:

    ~/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` = 1493132496360

显然,您的数据库连接在执行查询之前已关闭。您需要将该关闭连接 block 移动到查询 block 中,以强制它在查询后执行,如下所示:

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.
        });
    });
  }
});

当我运行时,插入成功:

~/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)

关于mysql 插入在 Node js 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43614132/

相关文章:

javascript - Node.js Socket.io ~ 连接时不起作用

node.js - GraphQL 嵌套查询查找

mysql - 表达这段代码的更简洁的方式是什么?

php - 合并两个 WordPress 数据库的帖子和帖子元数据

java - 使用 like 运算符搜索 MySql 数据库关键字

MySQL + PHP 确保用户名唯一(后缀自增)

Javascript代码分析: Count function, javascript文件中的变量调用和使用

javascript - 在 Node.js 应用程序中处理外部触发器

Node.js CMS 选项比 Calipso 更活跃、更有特色?

.net - Mysql能合理处理.NET多少百万条记录?