2017-04-25 82 views
0

我正在开发一个使用nodejs和mysql的web应用程序。 MySQL连接工作正常,但查询不是擅长的,也不显示任何错误。我的代码如下所示。请帮助我。MySQL插入不工作在节点js

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

插套是不是标准的SQL – modsfabio

+0

我用VALUES而不是SET但同样的问题。 – joe

+0

你有没有检查err变量中会发生什么?我的意思是在这里 - query = con.query(.. INSERT QUERY ..,post,function(err,result){if(err){throw err;} else {....} –

回答

1

如果您尝试打印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 

显然你的数据库连接是越来越执行查询之前关闭。你需要的是紧密连接块进入查询块,迫使它是这样的查询后执行:

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)