Rumah  >  Soal Jawab  >  teks badan

Menyelesaikan ralat tamat masa ketidakaktifan jabat tangan dalam modul MYSQL Node.js

<p>Saya menggunakan <code>node-mysql</code> dan kebanyakan pertanyaan berfungsi dengan baik. Tetapi beberapa pertanyaan tidak berfungsi. Saya mencuba setiap versi Node (dari 0.5... hingga 5.6.0), saya juga mencuba 4.0 dan 4.1 tetapi tidak membantu. </p> <p>Saya cuba menukarnya secara manual tetapi ia tidak berjaya. Saya cuba menukar fail <code>urutan</code> kepada: <code>this._idleTimeout = -1;</code> </p> <p>Saya membaca isu dan bahan di GitHub tetapi ia tidak membantu. </p> <p>Saya boleh cuba membetulkannya sendiri, tetapi saya memerlukan maklumat lanjut. Di manakah tamat masa berlaku? kenapa? Bila ia berlaku? Apakah jenis mesej ini? Dari mana datangnya tamat masa? </p> <pre class="brush:php;toolbar:false;">MYSQL_ERROR { [Ralat: Tamat masa tidak aktif jabat tangan] kod: 'PROTOCOL_SEQUENCE_TIMEOUT', maut: benar, tamat masa: 10000 }</pre> <p><br /></p>
P粉205475538P粉205475538424 hari yang lalu461

membalas semua(2)saya akan balas

  • P粉547420474

    P粉5474204742023-08-23 15:56:17

    Bagi AWS 上部署并遇到此错误的用户,您需要对数据库/集群的安全组进行更改,添加入站规则,其中 ialah kumpulan keselamatan daripada contoh.

    Peraturan masuk sepatutnya kelihatan seperti ini:

    类型:MySQL/Aurora
    协议:TCP(默认)
    端口:3306(默认)
    源:<实例的安全组>
    描述:<可选>

    balas
    0
  • P粉155128211

    P粉1551282112023-08-23 09:38:03

    Baiklah, tamat masa adalah dari baris 162 fail Protocol.js. Jika anda melihat node-mysql, anda akan melihat bahawa pembolehubah yang ditanya ialah "masa tamat". Jika anda menetapkan tamat masa kepada nilai yang jauh lebih tinggi daripada lalai 10000, ralat akan hilang. Contohnya ialah

    pool = require('mysql').createPool({
        connectionLimit : 1000,
        connectTimeout  : 60 * 60 * 1000,
        acquireTimeout  : 60 * 60 * 1000,
        timeout         : 60 * 60 * 1000,
        host            : process.env.DB_HOST,
        user            : process.env.DB_USERNAME,
        password        : process.env.DB_PASSWORD,
        database        : process.env.DB_DATABASE
    });

    Anda juga boleh mengedit tamat masa dalam fail Sequence.js (node_modules/mysql/lib/protocol/sequences/Sequence.js)

    this._timeout  = 100000;

    balas
    0
  • Batalbalas