mysql - 如何获取有关 MySQL 连接为何出现 ECONNREFUSED 的更多信息?

标签 mysql node.js

我尝试使用 promise-mysql( Node 模块)连接到 MySQL 实例,但失败并显示 ECONNREFUSED。这是整个错误:

{ Error: connect ECONNREFUSED 172.18.0.6:3306
    at Object.exports._errnoException (util.js:1018:11)
    at exports._exceptionWithHostPort (util.js:1041:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1090:14)
    --------------------
    at Protocol._enqueue (/usr/src/app/node_modules/mysql/lib/protocol/Protocol.js:141:48)
    at Protocol.handshake (/usr/src/app/node_modules/mysql/lib/protocol/Protocol.js:52:41)
    at Connection.connect (/usr/src/app/node_modules/mysql/lib/Connection.js:130:18)
    at connect (/usr/src/app/node_modules/promise-mysql/lib/connection.js:18:33)
    at /usr/src/app/node_modules/promise-mysql/lib/connection.js:52:9
    at Promise._execute (/usr/src/app/node_modules/bluebird/js/release/debuggability.js:300:9)
    at Promise._resolveFromExecutor (/usr/src/app/node_modules/bluebird/js/release/promise.js:483:18)
    at new Promise (/usr/src/app/node_modules/bluebird/js/release/promise.js:79:10)
    at new connection (/usr/src/app/node_modules/promise-mysql/lib/connection.js:51:12)
    at Object.exports.createConnection (/usr/src/app/node_modules/promise-mysql/index.js:6:12)
    at Context.<anonymous> (/usr/src/app/test/default-parameters.test.js:9:10)
    at callFn (/usr/src/app/node_modules/mocha/lib/runnable.js:345:21)
    at Hook.Runnable.run (/usr/src/app/node_modules/mocha/lib/runnable.js:337:7)
    at next (/usr/src/app/node_modules/mocha/lib/runner.js:309:10)
    at Immediate.<anonymous> (/usr/src/app/node_modules/mocha/lib/runner.js:339:5)
    at runCallback (timers.js:666:20)
    at tryOnImmediate (timers.js:639:5)
    at processImmediate [as _immediateCallback] (timers.js:611:5)
  code: 'ECONNREFUSED',
  errno: 'ECONNREFUSED',
  syscall: 'connect',
  address: '172.18.0.6',
  port: 3306,
  fatal: true }

我不知道为什么会发生这种情况。如何获取有关连接被拒绝原因的更多信息?

“更多信息”是指:

  • 这是因为凭据无效吗?
  • 主机是否无法访问?
  • 主机是否可访问,但 MySQL 服务器已关闭?
  • 我们是否达到了 MySQL 连接限制?
  • 我的电脑里有侏儒试图让我生气吗?

最佳答案

  1. 这是因为凭据无效吗?不,这会导致 access denied错误消息。

  2. 我们是否达到了 MySQL 连接限制?不,这会导致 too many connections错误消息。

  3. 主机是否无法访问?主机是否可访问,但 MySQL 服务器已关闭?是的,两者中的任何一个都可能导致此错误消息。该错误消息意味着客户端甚至无法到达服务器(此错误是由客户端生成的,前两个错误消息是由 MySQL 服务器生成的)。

作为 MySQL 文档 can't connect to MySQL说:

The error (2003) Can't connect to MySQL server on 'server' (10061) indicates that the network connection has been refused. You should check that there is a MySQL server running, that it has network connections enabled, and that the network port you specified is the one configured on the server.

不幸的是,无法根据错误消息判断哪一个导致了错误,您需要手动调查。

关于mysql - 如何获取有关 MySQL 连接为何出现 ECONNREFUSED 的更多信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43515272/

相关文章:

mysql - 仅替换重复项并跳过唯一项

python - Mysql Python eof 然后在获取更多数据后返回

node.js - 在 Azure 上运行 NodeJS 命令

javascript - 检查数组元素的第一个字符

php - 通过php输出时MySQL-PHP语法错误(好像没有)

mysql - SQL 查询中的 ORDER BY 子句

javascript - 无法在 Cheerio 中显示选择器内容

javascript - Node.js、Express、Redis - 无法调用来自单独模块的路由

MySQL 结合 select sum 和 select 查询

javascript - winston 记录器名称