2016-02-22 24 views
6

node-mysql ve sorguların çoğunu kullanıyorum. Çalışma. Bazı sorgular çalışmıyor. Düğümün her sürümünü (0,5 ...) (5.6.0) 'a kadar denedim, ayrıca (4.0) ve (4.1)' i denedim, Hiçbir şey yardımcı olmuyor.Hata: Node.js MYSQL modülünde Handshake eylemsizlik zaman aşımı

Her yıl değişmeye çalıştım ve çalışmadım. sequence dosyasını this._idleTimeout = -1; olarak değiştirmeye çalıştım ve yardımcı olmadı.

Sorunları okuyorum ve GitHub ve hiçbir şey yardımcı olmadı.

Bunu kendi başıma düzeltebilirim, ancak daha fazla bilgiye ihtiyacım var. Zaman aşımı nerede, neden? ne zaman? bu tür mesaj nedir? Zaman aşımı nereden geldi?

MYSQL_ERROR  { [Error: Handshake inactivity timeout] 
code: 'PROTOCOL_SEQUENCE_TIMEOUT', fatal: true, 
timeout: 10000 } 

Ben yaklaşık 100-150 puan için onu lütuf ve en iyi cevabı ödüllendirmek ve ben (2 gün beklemek gerekir) yapabilirsiniz olacaktır. Ama daha önce cevap verseniz bile, ödülü alacaksınız.

cevap

1

Tamam, zaman aşımı Protocol.js dosya satırından gelir: 162. Eğer node-mysql dosyasını kontrol ederseniz, bunun sorgular için değişken bir "zaman aşımı" olduğunu göreceksiniz. Zaman aşımını 10000'den çok daha yüksek bir değere ayarlarsanız, varsayılan, sonra hata gitmelidir. Bir örnek de Sequence.js dosyasında zaman aşımı düzenleyebilir

pool = require('mysql').createPool({ 
    connectionLimit : 1000, 
    connectTimeout : 60 * 60 * 1000, 
    aquireTimeout : 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 
}); 

olduğu (node_modules/mysql/lib/protokol/dizisi/Sequence.js)

this._timeout = 100000;

İlgili konular