MYSQLデータベースをインポートしようとすると、次のエラーが発生します。
Error Code: 2013 - Lost connection to MySQL server during queryQuery:
Error Code: 2006 - MySQL server has gone away
誰かが私に何が悪いのか教えてもらえますか?
MYSQLデータベースをインポートしようとすると、次のエラーが発生します。
Error Code: 2013 - Lost connection to MySQL server during queryQuery:
Error Code: 2006 - MySQL server has gone away
誰かが私に何が悪いのか教えてもらえますか?
調査は、my.cnfでのmysqlのmax_allowed_packetとwait_timeoutの設定について正しく話している多くのソリューションを示しています。macosxでのmysqlのデフォルトインストールにはこのファイルが含まれていないように見えるという小さな補遺。最初に/etc/my.cnfで作成する必要があるかもしれません(これは、mampスタックなどの代わりにmysqlのデフォルトインストールを使用している場合にのみ問題になります)
以下の私のためにこの問題を修正した/etc/my.cnfの内容:
[mysqld]
max_allowed_packet= 64M
wait_timeout= 6000
ここでは、このエラーとそれを回避/解決するためのさまざまな方法について詳しく読むことができます
ドキュメントから:
MySQLサーバーがなくなったというエラーの最も一般的な理由は、サーバーがタイムアウトして接続を閉じたことです。
INSERTクエリが、複数行の大きすぎる1行のステートメントである場合によく発生します。
次の2006エラー関連の修正を試してください:
サーバーがタイムアウトし、接続を閉じました。修正方法:mysqldのmy.cnf構成ファイルのwait_timeout変数が十分に大きいことを確認してください。
サーバーが誤ったパケットまたは大きすぎるパケットをドロップしました。mysqldが大きすぎるか正しくないパケットを取得した場合、mysqldはクライアントに問題が発生したと見なし、接続を閉じます。my.cnfファイルのmax_allowed_packetの値を増やすことにより、最大パケットサイズ制限を増やすことができます。
mysqlサーバーを再起動してみてください。サーバーが正しく機能していない可能性がありますが、それを表示しているSQL通知機能も実行されています。
my.cnf
これは、ファイルを編集する代わりの方法です。MySQLサーバーにログインして、MySQLグローバル変数の値を設定できます。
次のコマンドを使用して、すべてのMySQLグローバル変数とその値のリストを確認できます。
$> mysqladmin variables -u YourMysqlUsername -p
最初にMySQLサーバーにログインして、これらの変数の値を確認することもできます。
$> mysql -u YourMysqlUsername -p
mysql> SHOW VARIABLES;
特定の変数値を確認するには:
mysql> SHOW VARIABLES LIKE 'max_allowed_packet';
MySQL Server Gone Awayエラーを解決するには、
max_allowed_packet
変数の値を増やす必要があります。
mysql> SET GLOBAL max_allowed_packet=1072731894;
mysql> quit
これで、MySQLに再度ログインしてmax_allowed_packet
値を確認すると、更新された値が表示されます。
$> mysql -u YourMysqlUsername -p
mysql> SHOW VARIABLES LIKE 'max_allowed_packet';
+--------------------+------------+
| Variable_name | Value |
+--------------------+------------+
| max_allowed_packet | 1072731136 |
+--------------------+------------+
1 row in set (0.00 sec)
この問題が発生している理由はたくさんあります。ここでは、考えられるすべての理由を見つけることができます。個人的にはパケットサイズに苦労していますが、my.iniファイルを更新しましたが、その前に、 1048576B = 1MBを与えてくれたmax_allowed_packet変数を確認し、5MBに更新しました。'%packet%'のようなvariable_nameの変数を表示します
1048576/1024/1024を選択します
5242880/1024/1024を選択します
mySql変数を表示する
'max%'のような変数を表示する
グローバルmax_allowed_packet={PacketRANGE}を設定します。//このように10485760;
'max_all%'のようなグローバル変数を表示します。
ここでコーディングをお楽しみください
MySQL 5.7では、このエラーは通信パケットが大きすぎるために発生する可能性があります。
MySQLクライアントまたはmysqldサーバーがmax_allowed_packetバイトより大きいパケットを受信すると、ER_NET_PACKET_TOO_LARGEエラーを発行し、接続を閉じます。一部のクライアントでは、通信パケットが大きすぎると、クエリエラー中にMySQLサーバーへの接続が失われる場合があります。
MySQLのパケットは次のとおりです。
通信パケットは、MySQLサーバーに送信される単一のSQLステートメント、クライアントに送信される単一の行、またはマスターレプリケーションサーバーからスレーブに送信されるバイナリログイベントです。
ドキュメントは次の場所にあります。DOCSQL スクリプトがこのサイズより大きい場合は
、max_allowed_packetをより大きな値(デフォルト値は4MB)に設定して解決する必要があります。この値はオプションファイル内で設定できるため、毎回設定する必要はありません。
Microsoft Windows Vista以降では、max_allowed_packetをファイル
%PROGRAMDATA%\ MySQL \ MySQL Server 5.7 \ my.ini
または
%PROGRAMDATA%\ MySQL \ MySQL Server 5.7\my.cnfに設定できます。
ここで、PROGRAMDATA = C:\ ProgramData
詳細情報(他のSOについても)ここに
チューダーが彼の反応で述べたように:
The most common reason for the MySQL server has gone away error is that the
server timed out and closed the connection
次のコマンドを使用して、最大実行時間とサイズを変更する必要があります。
SET GLOBAL wait_timeout = 6000;
SET GLOBAL max_allowed_packet= 64M;
これらはSQLコマンドであるため、noramalコマンドのように実行できます。
サーバーの接続がオフラインで、パスワードが変更される前に作成されたMySQL接続を使用している場合があります。そのため、サーバーのパスワードが変更された後、新しい接続を作成してSQLプラクティスを使用する必要があります。
テーブルの最後に列を追加しようとすると、MySQLWorkbench8.0を使用するMySQLでこれが頻繁に発生していることがわかりました。さらに、テーブルはロックされて使用できなくなります。テーブルをドロップしようとすると、1日か2日後まで機能しません。ただし、既存の列の間に新しい列を挿入しても問題はないことがわかりました...
INSERTクエリが、複数行の大きすぎる1行のステートメントである場合。