使用機種
MacBook Pro (13-inch, 2019, Two Thunderbolt 3 ports)
mysql Ver 8.0.18 for osx10.14 on x86_64 (Homebrew)
ruby 2.5.7
rails 5.2.3
データベースにアクセスするとMysql2::Error::ConnectionError: Lost connection to MySQL server during query
というエラーが出てきてしまって困っています。
原因または解決方法をご存知の方はいらっしゃいますか?
私の行った手順
- パソコンを再起動しました。
- 作成中のアプリケーションのサーバー、Mysqlを起動させてWebブラウザにアクセス。
- データベースに問い合わせるページに移動しようとすると上のようなエラーが出ます。
ActiveRecord::StatementInvalid in Favorites#index Mysql2::Error::ConnectionError: Lost connection to MySQL server during query: SELECT `posts`.* FROM `posts` INNER JOIN `favorites` ON `posts`.`id` = `favorites`.`post_id` WHERE `favorites`.`user_id` = 8
今までは通常に動いていたのですが再起動後いきなりこの状態になりました。
色々と調べたのですが、どうやらこのあたが問題となっているのではないかと考えています。
● セッションタイムアウトが原因
● 一回のコネクションで通信パケットが大きい場合
● セッションに多量の情報が入っている場合
● APサーバ、DBサーバの性能が低い場合
☆やったこと
↓こちらの解決方法を行ったのですが上手くいきませんでした。
http://blog.s21g.com/articles/214
sudo gem install mysql_retry_lost_connection
config/environment.rbの中でrequire 'mysql_retry_lost_connection'
通信パケットが大きい場合
公式ドキュメントに以下のように書かれていました。
MySQL クライアントまたは mysqld サーバーが max_allowed_packet バイトより大きいパケットを受け取ると、ER_NET_PACKET_TOO_LARGE エラーが発行され、接続が失われます。一部のクライアントでは、パケットが大きすぎる場合、「クエリー中に MySQL サーバーへの接続が失われました」というエラーを受け取ることもあります。
mysql> show variables like 'max_allowed_packet';
+--------------------+----------+
| Variable_name | Value |
+--------------------+----------+
| max_allowed_packet | 67108864 |
+--------------------+----------+
1 row in set (0.00 sec)
調べたのですがmax_allowed_packetは60MB になっているのではないのかと思います。
なのでここは問題ではないと考えました。
APサーバーとDBサーバーの性能の調べ方はわからなかったので調べていません。
わかる方いましたらご回答よろしくお願いいたします。
あなたの回答
tips
プレビュー