web-dev-qa-db-ja.com

MySQLエラー1153 - 'max_allowed_pa​​ cket'バイトより大きいパケットを受けました

MySQLダンプをインポートしていて、以下のエラーが出ます。

$ mysql foo < foo.sql 
ERROR 1153 (08S01) at line 96: Got a packet bigger than 'max_allowed_packet' bytes

データベースに添付ファイルがあるようです。これは、非常に大きな挿入に役立ちます。


これは私のローカルマシン、MySQLパッケージからインストールされたMySQL 5を搭載したMac上にあります。

ダンプをインポートできるようにするには、max_allowed_packetをどこで変更しますか?

他に設定すべきことはありますか?

mysql --max_allowed_packet=32M …を実行するだけで同じエラーが発生しました。

406
kch

おそらく、クライアント(インポートを実行するために実行している)と、実行してインポートを受け入れるデーモンmysqldの両方に対して変更する必要があります。

クライアントの場合は、コマンドラインで指定できます。

mysql --max_allowed_packet=100M -u root -p database < dump.sql

また、mysqldセクションの下のmy.cnfまたはmy.iniファイルを変更して、次のように設定します。

max_allowed_packet=100M

あるいは、同じサーバーに接続されたMySQLコンソールでこれらのコマンドを実行することもできます。

set global net_buffer_length=1000000; 
set global max_allowed_packet=1000000000;

(パケットサイズには非常に大きな値を使用してください。)

539
Michael Pryor

Michaelpryorが言ったように、あなたはbothclientデーモンmysqldサーバーのためにそれを変える必要があります。

クライアントのコマンドラインに対する彼の解決策は優れていますが、設定によってはiniファイルが常にうまくいくとは限りません。

端末を開き、mysqlと入力してmysqlプロンプトを表示し、次のコマンドを発行します。

set global net_buffer_length=1000000; 
set global max_allowed_packet=1000000000; 

Mysqlプロンプトを開いたままにして、2番目の端末でコマンドラインのSQL実行を実行します。

121
Joshua Fox

これはmy.iniファイル(Windowsでは、\ Program Files\MySQL\MySQL Serverにあります)のserverセクションの下で変更できます。例えば:

[mysqld]

max_allowed_packet = 10M
37
GHad

Mysql.com dmgパッケージ配布のMySQLを使用する場合は、Mac OS Xでmy.cnfを再実行してください。

デフォルトでは、my.cnfはどこにもありません。

/usr/local/mysql/support-files/my*.cnfの1つを/etc/my.cnfにコピーしてmysqldを再起動する必要があります。 (これをインストールしたのであれば、MySQL設定ペインでできることです。)

16
kch

Etc/my.cnfで、max_allowed _packetとnet_buffer_lengthをに変更してみてください。

max_allowed_packet=100000000
net_buffer_length=1000000 

これでうまくいかない場合は、に変更してみてください。

max_allowed_packet=100M
net_buffer_length=100K 
12
Amirtha Rajan

この修正はMySQLデーモンのmax_allowed_pa​​cketを増やすことです。 Superとしてログインして次のコマンドを実行することで、実行中のデーモンにこれを行うことができます。

# mysql -u admin -p

mysql> set global net_buffer_length=1000000;
Query OK, 0 rows affected (0.00 sec)

mysql> set global max_allowed_packet=1000000000;
Query OK, 0 rows affected (0.00 sec)

次にダンプをインポートします。

gunzip < dump.sql.gz | mysql -u admin -p database
10
Primoz Rome

CENTOS 6の/etc/my.cnfでは、[mysqld]セクションの下の正しい構文は次のとおりです。

[mysqld]
# added to avoid err "Got a packet bigger than 'max_allowed_packet' bytes"
#
net_buffer_length=1000000 
max_allowed_packet=1000000000
#
5
Mike

あなたの問題とはちょっと無関係なので、これはGoogleのものです。

あなたがSQLをmysqldumpしなかったなら、それはあなたのSQLが壊れているのかもしれません。

私のコードに偶然に閉じられていない文字列リテラルがあることで、このエラーが発生しました。ずさんな指が起こる。

MySQLのおかげで、それは暴走文字列を取得するための素晴らしいエラーメッセージです。

4
jplindstrom

以下のようなコマンドを発行するmax_allowed_packet変数を使用してください。

mysql --max_allowed_packet=32M -u root -p database < dump.sql

4

時々タイプ設定:

max_allowed_packet = 16M

my.iniには動作していません。

次のようにmy.iniを決定してください。

set-variable = max_allowed_packet = 32M

または

set-variable = max_allowed_packet = 1000000000

その後、サーバーを再起動します。

/etc/init.d/mysql restart

攻撃者がより大きなサイズのパケットをプッシュしてシステムをクラッシュさせる可能性があるため、max_allowed_packetの値を高くすることはセキュリティ上のリスクです。

そのため、max_allowed_packetの最適値を調整してテストします。

set global max_allowed_packet = xxxを使用)の場合はmy.iniの一部として使用するよりも変更する方が良いでしょう。またはmy.conf.

1
Shiva

エラー:

エラー1153(08S01)、6772行目: 'max_allowed_pa​​cket'バイトより大きいパケットを取得しました操作は終了コード1で失敗しました

QUERY:

SET GLOBAL max_allowed_packet=1073741824;
SHOW VARIABLES LIKE 'max_allowed_packet'; 

最大値:

Default Value (MySQL >= 8.0.3)  67108864
Default Value (MySQL <= 8.0.2)  4194304
Minimum Value   1024
Maximum Value   1073741824
0
TinhNQ

Max_allowed_pa​​cketをmysqldumpでダンプしたときと同じ(またはそれ以上)に設定します。それができない場合は、小さい値でもう一度ダンプを作成してください。

つまり、mysqldumpでダンプしたとします。他のツールを使用したことがあるのであれば、それはあなた自身のものです。

0
MarkR

私は共有ホスティング環境で働いています、そして私はDrupalに基づくウェブサイトをホスティングしました。 my.iniファイルやmy.confファイルも編集できません。

そのため、Cacheに関連するすべてのテーブルを削除したため、この問題を解決できました。それでも私はこの問題に対処するための完璧な解決策/方法を探しています。

編集 - テーブルを削除して問題が発生した、coz Drupalはこれらのテーブルが存在するはずだと思っていました。それで私は問題を解決したこれらのテーブルの内容を空にしました。

0