私はnpm mysqlライブラリを使用しています。 (Pretty new to mysql)私はmysqlテーブルにデータを挿入するスクリプトを実行しています。ただし、何らかの理由で、一部の接続がタイムアウトしてしまいます。データベースに挿入するときのmysql接続タイムアウト(node.js)
{ Error: connect ETIMEDOUT
at PoolConnection.Connection._handleConnectTimeout (/Users/max/projects/stock-news-angular/node_modules/mysql/lib/Connection.js:425:13)
at Socket.g (events.js:286:16)
at emitNone (events.js:86:13)
at Socket.emit (events.js:185:7)
at Socket._onTimeout (net.js:334:8)
at tryOnTimeout (timers.js:232:11)
at Timer.listOnTimeout (timers.js:202:5)
--------------------
at Protocol._enqueue (/Users/max/projects/stock-news-angular/node_modules/mysql/lib/protocol/Protocol.js:141:48)
at Protocol.handshake (/Users/max/projects/stock-news-angular/node_modules/mysql/lib/protocol/Protocol.js:52:41)
at PoolConnection.connect (/Users/max/projects/stock-news-angular/node_modules/mysql/lib/Connection.js:136:18)
at Pool.getConnection (/Users/max/projects/stock-news-angular/node_modules/mysql/lib/Pool.js:48:16)
at Pool.query (/Users/max/projects/stock-news-angular/node_modules/mysql/lib/Pool.js:200:8)
at Object.<anonymous> (/Users/max/projects/stock-news-angular/app/scraper.js:90:34)
at initialize.exports.each (/Users/max/projects/stock-news-angular/node_modules/cheerio/lib/api/traversing.js:300:24)
at /Users/max/projects/stock-news-angular/app/scraper.js:82:29
at Array.forEach (native)
at /Users/max/projects/stock-news-angular/app/scraper.js:75:21
errorno: 'ETIMEDOUT'、 コード: 'ETIMEDOUT'、 システムコール:私はこのエラーを取得する '接続'、 致命的:}真
私はmysqlデータベースを見て、それを
.... some data
+------------+----------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+---------------------------+
12131 rows in set (0.09 sec)
このように、一連の行が正常に追加されているように見えますが、まだ多くは追加されていません。ここに接続を作成するためのコードがあります。プールされた接続を使用しています(正しいかどうかはわかりません)。私は多くのクエリを実行しなければならなかったので、一緒にプールします。プールの宣言:
var pool = mysql.createPool({
host: 'localhost',
user: 'root',
password: 'secret',
database: 'stock_news'
});
と問合せ:
pool.query({sql: 'INSERT INTO major_news SET ?', timeout:40000, values: post}, function(err, result) {
if (err)
console.log(err);
});
はおそらく、私は、MySQL十分に理解していないが、私は、接続はしばらく後にタイムアウトされている理由はわかりません。私はすでにタイムアウトを40000ミリ秒に増やしました。それで、私はそれが私には見えない何かかもしれないと思っています。
ループ内でpool.queryパーツを実行していますか? –
@HolgerWillはい私です。 – needhelpwithR
が問題である可能性があります。同時にプールからの多くの接続を同時に要求しています。 バルクインサートを使用できます... http://stackoverflow.com/questions/8899802/how-do-i-do-a-bulk-insert-in-mysql-using-node-js –