[已解决]使用nodejs连接mysql返回诡异结果,求解
最近使用nodejs连接mysql,访问禅道系统的数据库做数据统计时遇到奇怪问题
- 禅道系统可以正常使用
- 通过phpmyadmin可以正常访问mysql下的数据库
- 命令行也可以正常访问mysql
- 通过自己写的nodejs就无法正常访问,具体现象是可以连接数据库,也可以查询出具体的数据表中的结果,但是查询出来的结果不正确(直接用调试出的sql语句在phpmyadmin中查询出来的记录数和nodejs程序中查询出来的不一致,要少很多),但是我把服务器上的数据库导入到本地的mysql中同样的程序又可以正常访问
- 备注(服务器上的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 没有错误信息,只是查询出来的结果数量不一致,少了很多条数据!
@Einsy 重启过