やりたいことをやってゆく

プログラミング関連に興味のあるエンジニアのブログ。日々学んだことをアウトプットしてゆきます。

Received packet in the wrong sequence. エラーへの対処

Node.js + Lambda + JAWS を使用して MySQL5.6(RDS) に接続した際に Received packet in the wrong sequence.となってしまう場合の対処方法です。

現象

Lambda + Node.js な環境から MySQL5.6(RDS) にconneciton.conect();すると Received packet in the wrong sequence.のエラーとなってしまう。

ちなみにローカルでjaws runとした場合は問題なく接続できていました。

環境

{
  ...
  "devDependencies": {},
  "dependencies": {
    "jaws-core-js": "~0.0.2",
    "mysql": "^2.9.0",
    "request": "^2.67.0"
  }
}

コード

具体的なコードは下記の通りでconnect();時にエラーとなります。

var mysql = require('mysql');
var conn = mysql.createConnection({...});

module.exports.run = function(event, context, cb) {
  conn.connect(function(error){
    console.log("connect:" + error);
  });

原因

browserify のビルド時にうまくいってない模様とのこと。

対処

browserifyのビルドからMySQLのライブラリを外せば対処可能です。

具体的には各モジュール配下のawsm.json

"exclude": [
  "aws-sdk"
],
"includePaths": []
},
"excludePatterns": []

から

"exclude": [
  "aws-sdk",
  "mysql"
],
"includePaths": [
  "node_modules/mysql"
]

としてください。

参考