首页 > 解决方案 > NodeJS MySQL异常超时不是登录问题

问题描述

好的,所以我有一个使用 nodejs mysql 集成的数据库,它在 99% 的情况下都可以正常工作,但是当执行更长的执行过程时,它决定每次都执行并给我这个错误。

Error: connect ETIMEDOUT
    at Connection._handleConnectTimeout (/root/bot/node_modules/mysql/lib/Connection.js:409:13)
    at Object.onceWrapper (events.js:421:28)
    at Socket.emit (events.js:315:20)
    at Socket._onTimeout (net.js:481:8)
    at listOnTimeout (internal/timers.js:549:17)
    at processTimers (internal/timers.js:492:7)
    --------------------
    at Protocol._enqueue (/root/bot/node_modules/mysql/lib/protocol/Protocol.js:144:48)
    at Protocol.handshake (/root/bot/node_modules/mysql/lib/protocol/Protocol.js:51:23)
    at Connection.connect (/root/bot/node_modules/mysql/lib/Connection.js:116:18)
    at Connection._implyConnect (/root/bot/node_modules/mysql/lib/Connection.js:454:10)
    at Connection.query (/root/bot/node_modules/mysql/lib/Connection.js:196:8)
    at Client.<anonymous> (/root/bot/bot.js:281:7)
    at Client.emit (events.js:327:22)
    at MessageCreateAction.handle (/root/bot/node_modules/discord.js/src/client/actions/MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (/root/bot/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (/root/bot/node_modules/discord.js/src/client/websocket/WebSocketManager.js:386:31) {
  errorno: 'ETIMEDOUT',
  code: 'ETIMEDOUT',
  syscall: 'connect',
  fatal: true
}

在所有其他位置和功能中,它工作得非常好,但是这个剂量。我试过像这样设置超时。

[mysqld]
max_connections=200
wait_timeout = 31536000
interactive_timeout = 31536000
connect_timeout=31536000

在这样的实际程序中。

var con = mysql.createConnection({
    host: "localhost",
    user: "root",
    password: "passwd",
    timeout: 6000000,
    database: "bot"
  }); // MYSQL Connection

仍然超时。这让我发疯,任何人都可以在这里提供一些帮助或见解吗?

谢谢!

标签: mysqlnode.js

解决方案


经过一些头发撕裂挫折和花费数小时后,我终于找到了解决方案。

永远...

https://www.npmjs.com/package/forever

由于某些未知原因,在 Forever 而不是我的节点循环下运行程序似乎可以解决所有超时问题。

感谢大家的帮助!


推荐阅读