[已解决]使用nodejs连接mysql返回诡异结果,求解
发布于 1 个月前 作者 aofong 478 次浏览 来自 问答

最近使用nodejs连接mysql,访问禅道系统的数据库做数据统计时遇到奇怪问题

  1. 禅道系统可以正常使用
  2. 通过phpmyadmin可以正常访问mysql下的数据库
  3. 命令行也可以正常访问mysql
  4. 通过自己写的nodejs就无法正常访问,具体现象是可以连接数据库,也可以查询出具体的数据表中的结果,但是查询出来的结果不正确(直接用调试出的sql语句在phpmyadmin中查询出来的记录数和nodejs程序中查询出来的不一致,要少很多),但是我把服务器上的数据库导入到本地的mysql中同样的程序又可以正常访问
  5. 备注(服务器上的mysql一直无法远程访问,试过网上的各种方法,本人对mysql配置不是很了解)

已解决,原来服务器上面配置了2个实例端口号都是一样的,碰巧的时候另外一个库里面居然也有数据,只是少,估计是当初用了段时间,后期改了

var express = require('express');
var mysql = require('mysql');
var router = express.Router();
var async = require('async');
require('linqjs');

var pool = mysql.createPool({
    host: 'localhost',
    user: 'root',
    password: '123456',
    database: 'zentao'
});

/* GET home page. */
router.get('/', function (req, res, next) {
    var nowDate = new Date(),
        year = nowDate.getFullYear(),
        month = nowDate.getMonth(),
        queryDate = req.query.date || '',
        date = queryDate !== '' ? queryDate : year + '-' + (month > 10 ? month : '0' + month);
    async.parallel([function (callback) {
        pool.query('select account,realname from zt_user where dept=1', function (err, rows, fields) {
            callback(err, rows);
        })
    }, function (callback) {
        pool.query('SELECT name, status ,assignedTo,finishedBy,finishedDate,estimate,consumed,date_format(finishedDate, "%Y-%m-%d") as finishedDate FROM zt_task WHERE (status = "done" || status = "closed" ) and date_format(finishedDate, "%Y-%m")= "' + date + '"', function (err, rows, fields) {
            callback(err, rows);
        });
    }], function (err, result) {
        if (!err) {           
            res.render('index', { date: date });
        } else {
            res.render('error', {
                error: err.message
            });
        }
    })

});

module.exports = router;
8 回复

没有贴错误提示,不太清楚,我只能说自己遇到过的情况。mysql远程连接需要在配置文件开启,默认是仅能本地连接的。 From Noder

你确定这个 sql 能正确执行? date 被双引号括着,那是代表引用资源(列名,表名,别名)啊??

命令行也可以正常访问mysql 是远程连接(–host name)的命令行,还是在服务器端的命令行?信息不足。

配置远程访问之后要重启服务

@klesh 能正确执行,我在vscode 中断点时直接服务生成的sql语句,然后在phpmyadmin中执行结果正确

@leapon 服务器端的命令行

@fghpdf 没有错误信息,只是查询出来的结果数量不一致,少了很多条数据!

回到顶部