【问题标题】:How to query with node-mysql and write out the results?如何使用 node-mysql 查询并写出结果?
【发布时间】:2014-02-02 15:14:08
【问题描述】:

我正在尝试连接到我的主机上的数据库并写出结果,我没有收到任何错误,只是空白。像 console.log('test'); 这样的行放在任何地方总是可以工作,但我没有得到任何查询结果,我做错了什么?

var mysql      = require('mysql');
var connection = mysql.createConnection({
    host     : 'wm51.wedos.net',
    user     : 'xxxxxx',
    password : 'xxxxxx',
    database: 'd57283_vs'
});

connection.connect();
var queryString = 'SELECT * FROM versus LIMIT 5';

connection.query(queryString, function(err, rows, fields) {
    if (err) throw err;
    for (var i in rows) {
        console.log(rows[i].title); 

    }
});

connection.end();

(该表被称为 vs,具有列标题,url...在管理员中它都可以访问并且查询有效...)

【问题讨论】:

  • 您是否尝试过注释掉 connection.end() 以防它在 connection.query 有机会响应之前被调用?
  • 我已经尝试过了,没有任何变化(不过是个好主意)

标签: mysql node.js node-mysql


【解决方案1】:

小心底部的connection.end(); 调用。 NodeJS 是异步的,记得吗?

尝试将其放在 for 循环之后的内部函数的末尾,否则它将在调用查询时立即被调用,可能会终止您尝试使用的连接!

【讨论】:

    【解决方案2】:

    可能是查询时不连接mysql-server,或者查询时关闭mysql-server。

    var mysql      = require('mysql');
    var connection = mysql.createConnection({
        host     : 'wm51.wedos.net',
        user     : 'xxxxxx',
        password : 'xxxxxx',
        database: 'd57283_vs'
    });
    
    connection.connect();
    process.nextTick(function() {
        var queryString = 'SELECT * FROM versus LIMIT 5';
    
        connection.query(queryString, function(err, rows, fields) {
            connection.end();
            if (err) throw err;
            for (var i in rows) {
                console.log(rows[i].title); 
    
            }
    });
    
    });
    

    【讨论】:

    • 也不起作用。这一定是真的很愚蠢,我检查了安装,动态依赖项,一切似乎都很好......
    【解决方案3】:

    我相信 connection.end() 语句仍然需要在 for 循环之后。否则你在循环开始之前就结束了连接。

    【讨论】:

      猜你喜欢
      • 2020-06-20
      • 1970-01-01
      • 2015-10-24
      • 2014-11-23
      • 2012-04-23
      • 1970-01-01
      • 1970-01-01
      • 2015-07-15
      • 1970-01-01
      相关资源
      最近更新 更多