仕事の都合上、200MほどのSQLをユーザーライブラリにインポートする必要があります
コマンド
mysql> use user Database changed mysql> source /tmp/user.sql
を実行すると、インポート処理中にエラーMySQLサーバーが消えましたが発生し、データインポートが完了しました失敗した。
エラーメッセージは次のとおりです:
ERROR 2006 (HY000): MySQL server has gone awayERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... Connection id: 11Current database: userERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... Connection id: 12Current database: userERROR 2006 (HY000): MySQL server has gone awayERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... Connection id: 13Current database: user
最初はタイムアウトが原因だと思ったので、connect_timeoutとwait_timeoutの値を増やしました。
再実行しても問題が残ります。
解決策:
情報を確認したところ、max_allowed_packetパラメータを見つけました。
公式の説明では、クライアントから大規模なデータを転送するときにシステムがより多くの拡張子を割り当てることができるように、max_allowed_packetパラメータを適切に増やすことです。処理するメモリに転送します。
mysql max_allowed_packetの値を確認してください
mysql> show global variables like 'max_allowed_packet'; +--------------------+---------+| Variable_name | Value | +--------------------+---------+| max_allowed_packet | 4194304 | +--------------------+---------+
それが4Mであることがわかり、それから256M(1024*1024*256)
mysql> set global max_allowed_packet=268435456; Query OK, 0 rows affected (0.00 sec)mysql> show global variables like 'max_allowed_packet'; +--------------------+-----------+| Variable_name | Value | +--------------------+-----------+| max_allowed_packet | 268435456 | +--------------------+-----------+1 row in set (0.00 sec)
に増加します。変更後、インポートを実行すると、すべてが正常です。そして問題は解決されました。
注:
max_allowed_packet の値を変更するには、set global コマンドを使用します。この値は無効になり、mysql を再起動するとデフォルト値に戻ります。
再起動後に復元したくない場合は、my.cnfファイルを開いてmax_allowed_packet = 256Mを追加できます。
この記事では、mysql が大量のデータをインポートするときに MySQL サーバーが消えてしまう問題の解決策について説明します。関連コンテンツの詳細については、PHP 中国語 Web サイトを参照してください。
関連する推奨事項:
mysql 近くの N キロメートル以内のデータのインスタンスを検索します
mysql 接続が中断されたときに自動的に再接続するメソッド
php HTML エンティティ番号と非 ASCII 文字列を変換するためのクラス
以上がmysql が大量のデータをインポートすると MySQL サーバーが消えてしまう問題の解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。