节点 Js mysql(和 mysql2) ECONNRESET

Posted

技术标签:

【中文标题】节点 Js mysql(和 mysql2) ECONNRESET【英文标题】:Node Js mysql(and mysql2) ECONNRESET 【发布时间】:2019-03-29 10:00:26 【问题描述】:

我目前正在尝试使用带有 mysqlmysql2 NPM 依赖项的 Node.Js 连接到 Internet 上的 MySQL 服务器,以使用查询和其他相关内容。

代码很简单……

//i import my dependency
const mysql = require('mysql2') //either 'mysql' or 'mysql2'

//i create my pool to create connections as needed
var conn = mysql.createPool(
    host: 'some_database_i_have_access_to.mysql.uhserver.com',
    user: 'valid_user',
    password: 'valid_password',
    database: 'some_existing_database'
)

//i try to connect (this is the part where it fails)
conn.getConnection((err,conn) => 
    if (err) throw err //<- the error is thrown here

    //i do query stuff
    conn.query("SELECT * FROM atable",(err,res,firlds) => 
        if(err) throw err
        console.log(JSON.stringify(res))
    )
    //i close the connection
    conn.end()
)

但我总是收到这样的错误:

Error: read ECONNRESET
    at TCP.onStreamRead (internal/stream_base_commons.js:111:27)
    --------------------
    at Protocol._enqueue (C:\Users\Aluno\Desktop\my-project\node_modules\mysql\lib\protocol\Protocol.js:144:48)
    at Protocol.handshake (C:\Users\Aluno\Desktop\my-project\node_modules\mysql\lib\protocol\Protocol.js:51:23)
    at Connection.connect (C:\Users\Aluno\Desktop\my-project\node_modules\mysql\lib\Connection.js:118:18)
    at Object.<anonymous> (C:\Users\Aluno\Desktop\my-project\private\dtp-mysql.js:13:6)
    at Module._compile (internal/modules/cjs/loader.js:707:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:718:10)
    at Module.load (internal/modules/cjs/loader.js:605:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:544:12)
    at Function.Module._load (internal/modules/cjs/loader.js:536:3)
    at Module.require (internal/modules/cjs/loader.js:643:17)

我所知道的关于该错误的所有信息是,如本问题 (Node js ECONNRESET) 所述,连接突然在一侧关闭,但仅此而已,创建单一连接也不能解决我的问题。

有什么解决办法吗?

【问题讨论】:

你也可以参考下面的网址。 ***.com/questions/53586818/… 【参考方案1】:

您好,我知道这是不久前被问到的,但这可能是因为您正在使用:

conn.end()

由于您使用的是池连接,我认为您可以使用释放连接

conn.release()

或者

conn.destroy()

【讨论】:

【参考方案2】:

您也可以参考以下网址。 error while inserting LARGE volume data in mysql by using node.js (error code: 'ECONNRESET')

我已经解决了这个问题。它是由默认定义 max_allowed_pa​​cket 引起的。在 my.ini (C:\ProgramData\MySQL\MySQL Server 5.7) 中找到 max_allowed_pa​​cket。更新为“max_allowed_pa​​cket=64M”。重启mysql。完成。

【讨论】:

以上是关于节点 Js mysql(和 mysql2) ECONNRESET的主要内容,如果未能解决你的问题,请参考以下文章

具有 Mysql2 时区问题的节点

使用带有 async\await 的 mysql 池 |节点JS

插入方法上的 Discord.js 和 mysql2 错误

节点 mysql2 无法访问更新结果

如何解析 node.js、express.js、mysql2 中“rows”对象的数据

安装 mysql2 gem 错误