Node-mysql无法正常工作......需要调试思路

时间:2014-03-03 23:09:01

标签: mysql node.js debugging socket.io

我是第一次使用node-mysql,我有一个没有错误,没有警告但没有正常工作的程序......这是该程序的代码,非常简单:

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '',
  database:  'nodetest',
  port: 8080
});

connection.connect();
var usr = "BLASHDASD"
var userId = usr;
var sql = 'UPDATE userlist SET user1= ' + connection.escape(userId) + ' WHERE id=1 ';
console.log(sql);

connection.query('sql', function(err, rows, fields) {
  console.log(err);
  console.log("BLAHSDBKASD");
});

connection.end();

这是控制台输出:

C:\wamp\www\nodePHP-master\js>node nodeTest.js
UPDATE userlist SET user1= 'BLASHDASD' WHERE id=1

但我的MySQL表中没有发生任何事情......我甚至复制并粘贴了上面的UPDATE行,并将其作为SQL代码运行,并且工作得很好......需要一些关于发生了什么的想法。非常感谢

修改

回答了我自己的问题......正在侦听错误的端口,因此连接失败了。以下是未来感兴趣/搜索的更新代码:

//TEST

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '',
  database:  'nodetest',
  port: 3306,
});

connection.connect(function(err){
    if(err) {
        console.log(err)
    } else {
        console.log("connected");
    }
});
var usr = "BLASHDASD"
var userId = usr;
var sql = 'UPDATE userlist SET user1= ' + connection.escape(userId) + ' WHERE id=1 ';
console.log(sql);

connection.query(sql, function(err, rows, fields) {
  console.log(err);
});

connection.end();

1 个答案:

答案 0 :(得分:-1)

您遇到节点的异步性问题,这是进入Node时非常常见的问题。你的代码中也有一个很小但很重要的错误(你有'sql'作为带引号的字符串),但这里有一些结构相似的东西应该指向正确的方向。

var mysql      = require('mysql');
var connection = mysql.createConnection({
    host     : 'locahost',
    user     : 'foo',
    password : 'bar',
    database : 'test'
});

// the callback inside connect is called when the connection is good
connection.connect(function(err){
    var sql = "select 'Joe' as name from dual";

    connection.query(sql, function(err, rows, fields) {
        if (err) return console.log(err);
        //  you need to end your connection inside here.
        connection.end();
        console.log(rows[0].name);
    });
});

您可能会开始想知道避免所有这些回调的方法。您可能希望查看我对this question的答案,了解更多扩展的mysql示例以及提供替代回调狂热的替代实现。