PEAR MDB2でMDB2 Error: unknown errorとなる場合の対策

2014/05/28 2020/06/11

些細の無いInsertでMDB2でエラーが発生し、getMessage()では、

Error: unknown error

とつれない内容。しょうがないのでgetDebugInfo()を見てみると、

[Native code: 2006]
[Native message: MySQL server has gone away]

という内容が。
調べてみるとSQLが長時間かかってタイムアウトしているか、DB接続されてない状態でクエリ実行したとあった。
が、SQL自体1行のInsertで全然時間かかってないし、DB接続もちゃんとしてる状態。

うーん、なんだろうと悩みました。
ループ処理の中でのInsertですがループごとにInsertする形ではなかったので、Insertから次のInsertまでDB的には1分程度ブランクが発生する可能性がある事に気付き、それでタイムアウトしてDBセッションが閉じられてるのではないかと考えました。

で、キープアライブ代わりに以下SQLを一定ループ毎に発行する事にしてみました。

select 1 from dual

これでエラーは回避できました。

本当は自動再接続の機能があればいいのですがMDB2には無いみたいですね。
MySQLドライバだとisConnectionメソッドも使えないようなのでこれで逃げるしかないのかも。

関連記事

関連記事はありません。

 

コメントとトラックバック

    コメントはありません

    コメントを残す

    CAPTCHA


    トラックバックURLhttps://e-tune-mt.net/ylab/1364/trackback