質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Q&A

0回答

3546閲覧

Mysql2::Error::ConnectionError: Lost connection to MySQL server during query MySQLに上手く接続できない。

BadXO

総合スコア6

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

0グッド

0クリップ

投稿2019/11/22 10:22

使用機種
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
というエラーが出てきてしまって困っています。
原因または解決方法をご存知の方はいらっしゃいますか?

私の行った手順

  1. パソコンを再起動しました。
  2. 作成中のアプリケーションのサーバー、Mysqlを起動させてWebブラウザにアクセス。
  3. データベースに問い合わせるページに移動しようとすると上のようなエラーが出ます。
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サーバーの性能の調べ方はわからなかったので調べていません。

わかる方いましたらご回答よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問