概要
- phpmyadminでsql.ZIPをインポートした時に、以下のエラーが表示されました。
- 本記事はこのエラーの解決方法を記載します。
エラー
静的解析:
解析中に 1 個のエラーが見つかりました。
式がありません。 (near "ON" at position 25)
SQL クエリ: コピー 編集 編集
SET FOREIGN_KEY_CHECKS = ON;
MySQL のメッセージ: ドキュメント
#2006 - MySQL server has gone away
原因:MySQLサーバーパケットの最大サイズ
- MySQLサーバーの
max_allowed_packet
設定値(パケットの最大サイズ)が不足している場合、MySQLサーバーが接続を中断してしまう場合があります。自分の場合もインポートしたZIPの半分くらいまでテーブルが作成されている状態で、途中で終わってしまったぽかったです。 -
SET FOREIGN_KEY_CHECKS = ON;
を実行しようとしたら、MySQLサーバーに接続できなかった、というメッセージの意味であって、SET FOREIGN_KEY_CHECKS = ON;
と#2006 - MySQL server has gone away
は直接関係があるわけではなさそうです。 - 他には、データベースの設定が正しくない場合やネットワークで問題が生じている場合に表示されることがあるらしいです。
解決方法:max_allowed_packet
を変更する
- MySQLサーバーの
max_allowed_packet
設定値も変更する必要があります。 -
my.cnf
ファイルで以下を追加すればOKです(設定次第ではmysqld.cnf
の可能性もあります)。
my.cnf
[mysqld]
max_allowed_packet=512M
- 自分の場合は、Dockerコンテナでmysqlを起動していたので、
docker-compose.yml
で起動する際に自動適用できるようにmy.cnf
ファイルをマウントする形にしました。インポートし直すとするたびにこの設定を加えるような運用だと面倒ですので。