好的,我有一个使用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
仍然超时。这快把我逼疯了,有人能在这里提供一些帮助或见解吗?
谢谢!
发布于 2020-09-11 22:30:21
在经历了一些令人头疼的挫折和花费了很多小时之后,我终于找到了一个解决方案。
永远..。
https://www.npmjs.com/package/forever
出于某种未知的原因,在Forever下运行程序,而不是在节点循环下运行,似乎可以解决所有的超时问题。
感谢大家的帮助!
https://stackoverflow.com/questions/63815442
复制相似问题