【发布时间】:2014-12-27 07:29:13
【问题描述】:
我有一个使用 Node.js 和 MySQL 的项目。该项目在本地 MAC osx 上运行良好。但是在centOS服务器上部署时出现错误。该项目有 2 部分,1 是使用 cron 自动运行的,它自动从一个 Web 获取数据,并将这些数据更新到 MySQL。这部分在本地和在线服务器上都可以正常工作。但另一部分不是,那部分是在浏览器上显示UI,但访问时却显示错误。
Error: Cannot enqueue Query after fatal error.
at Protocol._validateEnqueue (/home/xx/node_modules/mysql/lib/p rotocol/Protocol.js:193:16)
at Protocol._enqueue (/home/xx/node_modules/mysql/lib/protocol/ Protocol.js:129:13)
at Connection.query (/home/xx/node_modules/mysql/lib/Connection .js:185:25)
at SessionStore.get (/home/xx/node_modules/express-mysql-sessio n/lib/index.js:92:18)
at session (/home/xx/node_modules/express-session/index.js:348: 11)
at Layer.handle [as handle_request] (/home/xx/node_modules/expr ess/lib/router/layer.js:82:5)
at trim_prefix (/home/xx/node_modules/express/lib/router/index. js:270:13)
at /home/xx/node_modules/express/lib/router/index.js:237:9
at Function.proto.process_params (/home/xx/node_modules/express /lib/router/index.js:312:12)
at /home/xx/node_modules/express/lib/router/index.js:228:12
(这个错误显示在控制台日志和浏览器上,之后项目仍在运行,所以我猜这是来自 MySQL)。
这是sql连接文件:很简单
var config = require('./config');
var mysql = require('mysql'),
host = config.hostName,
user = config.databaseUser,
password = config.databasePassword,
database = config.databaseName;
module.exports = mysql.createPool({
connectionLimit : 10,
host: host,
user: user,
password: password,
database: database
});
我就是这样称呼它的:
imgExport.selectLast = function(callback){
conn.getConnection(function(err,conn) {
querySelectLast15Secon = "SELECT * FROM image WHERE year(moderate_time) = year(curdate()) AND month(moderate_time) = month(curdate()) AND (time(moderate_time) >= (curtime() - 15));";
conn.query(querySelectLast15Secon, function (err, rows, fields) {
if (err) throw err;
callback(rows);
conn.release();
})
});
};
我在调试代码之前使用了console.dir(conn.threadId),它的打印是这样的,那是什么意思? (每行数字)
6177 6180 6181 6184 6183 6185 6176 6178 6179 6177 6183 6184 6185 6182 6180 6177 6176 6181 6183
【问题讨论】:
-
两个系统上的 MySQL 版本是否相同?
-
您是否在每个系统上都创建了一个新的
npm install,或者至少是一个npm rebuild?许多数据库连接器都有本机组件。 -
@BrandonBuck : MacOSX :mysql Ver 14.14 Distrib 5.6.19, for osx10.9 (x86_64) using EditLine wrapper on CentOS : mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64 ) 使用 readline 5。布拉德:是的,我已经做到了 1
-
@Brad FWIW
mysql模块是纯 javascript,不涉及编译。 -
@mscdex 他没有告诉我们他正在使用什么模块。但我想它可能是菲利克斯的,在这种情况下你是对的。 (这实际上是我自己使用 Felix 模块的原因,用于不进行大量查询的应用程序。它可以方便地删除整个目录,
node_modules和所有其他地方。)
标签: mysql node.js express centos6.5