Python で Web アプリケーションを作っていて、ログイン後しばらく放っておいて、他の画面に遷移すると以下のようなエラーが出た。
sqlalchemy.exc.StatementError: (sqlalchemy.exc.InvalidRequestError) Can't reconn ect until invalid transaction is rolled back
今まで SQLAlchemy を使ってたけど、初めて遭遇した。
なんだろうこれと思って調べたら、SQLAlchemy の pool_recycle の秒数が MySQL の wait_timeout の秒数より長く設定していためだった。
とりあず pool_recycle の値を wait_timeout と同等にする事で解決。
ちゃんと MySQL のチューニングをする際に気をつけないと。