【问题标题】:NodeJS running on Mac, and have an error occurred when deploying on centOSNodeJS 在 Mac 上运行,在 centOS 上部署时出现错误
【发布时间】: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


【解决方案1】:

已修复! 问题出在 express-sql-session 上!我从代码中删除了它,它的工作正常。所以我想我需要在这里为他们报告这个问题:

https://github.com/chill117/express-mysql-session/issues

我认为该模块中的 connection.end() 存在一些问题。不知道在哪里,但可能需要一些时间才能找到。

【讨论】:

  • 你好@The Mechanic,你能提供一个你做了什么来解决这个问题的详细解决方案吗?
猜你喜欢
  • 1970-01-01
  • 2020-01-13
  • 2021-05-27
  • 1970-01-01
  • 2016-02-09
  • 2013-03-28
  • 2019-03-08
  • 2021-11-08
  • 2019-04-24
相关资源
最近更新 更多