Node.js mysql 读取 ECONNRESET

Posted

技术标签:

【中文标题】Node.js mysql 读取 ECONNRESET【英文标题】:Node.js mysql read ECONNRESET 【发布时间】:2022-01-02 18:45:42 【问题描述】:

在搜索了有关此错误的很长时间后,并没有真正弄清楚如何在我的项目中处理此错误。我需要你的帮助:)。

我遇到了问题,我的屏幕和我的 Node-APP 会在几个小时后给我一个错误(我不知道几个小时后,但我的感觉告诉我它并不总是相同的时间)

我会在下面告诉你我的错误。有谁知道如何解决这一问题?我已经尝试过从一个短表中选择所有内容的间隔,以重置与数据库的连接,因此连接不会关闭,因为总会(每 30 分钟)对数据库进行一次短调用。

在我收到错误并重新启动应用程序后,一切正常。我看到它是一个空闲时间问题,但我没有找到任何方法来解决这个问题。 这就是我创建与数据库的连接的方式。

var con = mysql.createConnection(
   host: process.env.DATABASE_HOST,
   user: process.env.DATABASE_USER,
   password: process.env.DATABASE_PASSWORD,
   database: process.env.DATABASE );


  con.connect(function(err) 
   if (err) throw err;
   console.log("Connected to Database!");
 );

非常感谢您!

最好的问候

错误:

node:events:371
      throw er; // Unhandled 'error' event
      ^

Error: read ECONNRESET

    at TCP.onStreamRead (node:internal/stream_base_commons:211:20)
Emitted 'error' event on Connection instance at:
    at Connection._handleProtocolError (/var/www/xxx/xxx/node_modules/mysql/lib/Connection.js:423:8)
    at Protocol.emit (node:events:394:28)
    at Protocol._delegateError (/var/www/xxx/xxx/node_modules/mysql/lib/protocol/Protocol.js:398:10)
    at Protocol.handleNetworkError (/var/www/xxx/xxx/node_modules/mysql/lib/protocol/Protocol.js:371:10)
    at Connection._handleNetworkError (/var/www/xxx/xxx/node_modules/mysql/lib/Connection.js:418:18)
    at Socket.emit (node:events:394:28)
    at emitErrorNT (node:internal/streams/destroy:157:8)
    at emitErrorCloseNT (node:internal/streams/destroy:122:3)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) 
  errno: -104,
  code: 'ECONNRESET',
  syscall: 'read',
  fatal: true

再次感谢您!!! :)

【问题讨论】:

【参考方案1】:

我认为这是因为多个数据库连接

使用createPool 代替createConnection 并破坏connectionLimit,acquireTimeout 毫秒,以便在此时间后自动关闭连接

var mysql = require('mysql');
var pool  = mysql.createPool(
  connectionLimit : 10,
  acquireTimeout  : 10000
  host            : 'example.org',
  user            : 'bob',
  password        : 'secret',
  database        : 'my_db'
);

pool.query('SELECT 1 + 1 AS solution', function (error, results, fields) 
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
);

【讨论】:

非常感谢!我会试试这个,让你知道!!!再次感谢你! :)

以上是关于Node.js mysql 读取 ECONNRESET的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Node.js 中读取文件?

在 node.js 中读取 PHP Session 数据

如何使用 HTML 输入文件导入 excel 文件并在 Node.js 中读取文件内容(如何将完整路径发送到 Node.js)

你怎么得到运行Node.js脚本的cron作业从.env文件中读取变量?

如何在 Node.js 中读取符号链接

Node.js 等待循环中读取的所有文件