sqlalchemy+pymysql で MySQL サーバーから大量のレコードを select しようとしました。

その際、 stream_results=True の設定を行うと、 select から 2,3 分ほど経った段階で、

Lost connection to server during query

のエラーが発生し、 select が途中で中断してしまいます。なお、 stream_results=True を付与しなければ、この問題は発生しませんでした。

https://dev.mysql.com/doc/refman/8.0/en/error-lost-connection.html

上記ページをみてみても、

  1. net_read_timeout => 3600 にしたけど、 2,3分で例外発生
  2. connection_timeout => 最初の何件かは select できていることを確認したので、 establish connection まわりの例外ではなさそう
  3. max_allowed_packet => MySQL Workbench で、個別に例外が発生したタイミングで select していたレコードたちを個別で select してみると、問題なく select できる

であり、解決に至っていません。

質問

  • 何が原因で、この問題は発生していますか?