[MySQL]リストアの際に、読み込みファイルが大きすぎるとエラーになるので設定を変更する。

今回は既存のシステムの運用のため、新しいPCへのセットアップを行っている時に発生したMySQLのエラーの解消方法です。

発生したエラーはこちら

MySQL server has gone away

テーブルのクリエイト分とそのテーブルにレコード作成のテキストファイルながら6ギガほどのSQLを実行したところ発生しました。
エラーが出てから中身を確認すると、どうやら途中までは正しく登録されているっぽい。

上記のエラーを調べてみると、原因がわかりました。待機時間が長すぎて接続が切れる際に起こるのが一般的なようですが、今回は単純に「クエリが大きすぎたため」です。

サーバー側が受け取れるクエリの上限サイズを広げてあげればうまくいきました。

手順

現在設定されているサイズの確認

mysqlに接続したら、

show variables like ‘max_allowed_packet’;

これは設定を変更した後にも流してちゃんとサイズか変わったか確認する時にも使います。
要するにどのくらいの大きさのパケットまでの通信を許容しますか?という定義値です。

続いてMYSQLの設定ファイルを変更します。
my.iniというファイルを探してください。
私の場合は下記パスにありました。

my.iniを開いたら、一番最後にでいいのでこの記述を追加してください。

max_allowed_packet=32MB

※ここでは32MBにしていますが、必要に応じてサイズは変えてください。

なお、my.iniが上書き禁止になっていて書き込めない時は、エクスプローラー上でファイルを右クリックしてプロパティを開いて、
1.セキュリティタブに移動
2.「グループ名またはユーザー名」のUser(xxxxxxxxx)を選択し、『編集』ボタンを押下
3.「Usersのアクセス許可」の「フルコントロール」にチェックをつけて、『OK』ボタンを押下
で編集できるようになります。

あとはMySQLの再起動です。
コマンドを叩けばいいのかもしれませんが、そっちはわからなかったので、Windowsのサービスの再起動で行いました。
Windows10の手順になります。
<コントロールパネル\システムとセキュリティ\管理ツール>
にある、「サービス」のショートカットをクリックすると、サービスの一覧が立ち上がるので、そこからMySQLを探して再起動してください。

最後に再び

show variables like ‘max_allowed_packet’;

で、サイズがちゃんと大きくなっていれば完了です。