MySQLでmax_allowed_packet
を使用してSET GLOBAL
のデフォルト値を変更する方法を見つけました。ただし、このコマンドを使用するたびに、デフォルト値は変更されませんでした!私はこれらのコマンドを使用しました:
mysql --user=root --password=mypass
mysql> SET GLOBAL max_allowed_packet=32*1024*1024;
Query OK, 0 rows affected (0.00 secs)
mysql> SHOW VARIABLES max_allowed_packet;
そして、結果はmax_allowed_packet = 1048576です。何が欠けていますか?
うーん、あなたはこれをヒットしました NOT-A-BUG のようです。 :)
グローバルシステム変数を変更すると、その値は記憶され、サーバーが再起動するまで新しい接続に使用されます。 (グローバルシステム変数設定を永続的にするには、オプションファイルで設定する必要があります。)変更は、そのグローバル変数にアクセスするすべてのクライアントに表示されます。ただし、変更は、変更後に接続するクライアントに対してのみ、対応するセッション変数に影響します。グローバル変数の変更は、現在接続されているクライアントのセッション変数には影響しません(SET GLOBALステートメントを発行するクライアントのセッション変数にも影響しません)。
this も参照してください。シェーン・ベスターの説明を読んでください。
My.ini/my.cnfファイルから変更し、max_allowed_packet設定を有効にするためにサーバーを再起動する必要があります。
走った後
set global max_allowed_packet=1000000000;
前にmysqlを再起動する必要があります
SHOW VARIABLES LIKE 'max_allowed_packet'
新しい値が表示されます。
MAC OSXシステム設定を介してmysqlを再起動すると、この問題が発生し、値は変更されませんでした。コンソール経由でmysqlにログインすることで
mysql -u root -p
それを変更してからmySqlを再起動するように見えた。ただし、OS Xの癖である可能性があります。
これに遭遇した人のために変数を見るための簡単な方法。値を取得するには、実行する必要があります
SHOW VARIABLES LIKE 'max_allowed_packet'
MariaDb構成を使用している場合、問題はmax_allowed_packet変数が後で呼び出される構成ファイルによって上書きされることです。
私の場合、データベースをインポートしようとすると、サーバーが応答しました:ERROR 2006(HY000)at 736:MySQL server is gone away
ファイルが次のことを発見しました:
/etc/mysql/mariadb.conf.d/50-server.cnf
後で呼ばれます
/etc/mysql/conf.d/mysql.cnf
「mysql.cnf」ファイルを継続的に変更しようとしましたが、「50-server.cnf」で値が上書きされました。
解決策はファイルを入力することです
/etc/mysql/mariadb.conf.d/50-server.cnf
"max_allowed_packet = 16M"の代わりに、例として目的の値を入力します"max_allowed_packet = 64M"