[mysql] Mysql2::Error::ConnectionError: Server has gone away

はじめに

でっかいSQLを発行したらgone awayされた

問題

あえてメモリをゴリゴリに使ってでっかいSQL投げて動かそうとしたらgone awayされた…

/usr/local/bundle/gems/mysql2-0.5.5/lib/mysql2/client.rb:151:in `_query': Mysql2::Error::ConnectionError: Server has gone away (ActiveRecord::StatementInvalid)
    from /usr/local/bundle/gems/mysql2-0.5.5/lib/mysql2/client.rb:151:in `block in query'
    from /usr/local/bundle/gems/mysql2-0.5.5/lib/mysql2/client.rb:150:in `handle_interrupt'
    from /usr/local/bundle/gems/mysql2-0.5.5/lib/mysql2/client.rb:150:in `query'
    from /usr/local/bundle/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:638:in `block (2 levels) in raw_execute'
    ...(略)...
/usr/local/bundle/gems/mysql2-0.5.5/lib/mysql2/client.rb:151:in `_query': Server has gone away (Mysql2::Error::ConnectionError)
    from /usr/local/bundle/gems/mysql2-0.5.5/lib/mysql2/client.rb:151:in `block in query'
    from /usr/local/bundle/gems/mysql2-0.5.5/lib/mysql2/client.rb:150:in `handle_interrupt'
    from /usr/local/bundle/gems/mysql2-0.5.5/lib/mysql2/client.rb:150:in `query'
    ...(略)...

解決方法

max_allowed_packet を越えちゃったのが原因っぽい
docker-composeでmysqlコンテナを動かしているので、
起動時にオプション指定してあげることで解決

mysql:
    image: mysql
    ...(略)...
    command: --max_allowed_packet=100M

おわりに

だろうなと思ってたけど、やっぱりなの結果。

コメント

タイトルとURLをコピーしました