it-swarm-tr.com

MySQL Hatası 1153 - 'max_allowed_packet' bayttan daha büyük bir paket var

Bir MySQL dökümünü içe aktarıyorum ve aşağıdaki hatayı alıyorum.

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

Görünüşe göre veritabanında çok büyük kesici uçlar bulunan ekler var.


Bu benim yerel makinemde, MySQL paketinden yüklenen MySQL 5 yüklü bir Mac.

Dökümü içe aktarabilmek için max_allowed_packet adresini nerede değiştirebilirim? 

Ayarlamam gereken başka bir şey var mı? 

Sadece mysql --max_allowed_packet=32M … çalıştırmak aynı hatayla sonuçlandı.

386
kch

Muhtemelen bunu hem istemci için (içe aktarma yapmak için çalışıyorsunuz) hem de içe aktarmayı çalıştıran ve kabul eden daemon mysqld için değiştirmeniz gerekir.

İstemci için komut satırında belirtebilirsiniz:

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

Ayrıca, mysqld bölümünün altındaki my.cnf veya my.ini dosyasını değiştirin ve ayarlayın:

max_allowed_packet=100M

ya da şu komutlarını aynı sunucuya bağlı MySQL konsolunda çalıştırabilirsiniz:

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

(Paket boyutu için çok büyük bir değer kullanın.)

517
Michael Pryor

Michaelpryor'un dediği gibi, hem / client ve daemon mysqld sunucusu olarak değiştirmeniz gerekir.

İstemci komut satırı için çözümü iyidir, ancak ini dosyaları yapılandırmaya bağlı olarak her zaman hile yapmazlar. 

Bu yüzden bir terminal açın, mysql komutunu almak için mysql yazın ve aşağıdaki komutları verin:

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

MySQL istemini açık tutun ve komut satırı SQL yürütmenizi ikinci bir terminalde çalıştırın.

118
Joshua Fox

Bu, sunucu bölümünün altındaki my.ini dosyanızda (Windows'ta\Program Files\MySQL\MySQL Server'da bulunur) değiştirilebilir, örneğin:

[mysqld]

max_allowed_packet = 10M
36
GHad

Mysql.com dmg paket dağıtımından MySQL kullanırken My.cnf'yi Mac OS X'te yeniden başlatın

Varsayılan olarak, my.cnf bulunamadı.

/usr/local/mysql/support-files/my*.cnf'dan birini /etc/my.cnf'a kopyalamanız ve mysqld dosyasını yeniden başlatmanız gerekir. (Taktıysanız MySQL tercihler bölmesinde yapabilecekleriniz.)

15
kch

Etc/my.cnf dosyasında max_allowed _packet ve net_buffer_length öğelerini

max_allowed_packet=100000000
net_buffer_length=1000000 

bu işe yaramazsa, daha sonra değiştirmeyi deneyin.

max_allowed_packet=100M
net_buffer_length=100K 
12
Amirtha Rajan

Düzeltme, MySQL daemon’unun max_allowed_packet değerini arttırmaktır. Bunu Super olarak giriş yaparak ve aşağıdaki komutları çalıştırarak çalışan bir servise yapabilirsiniz. 

# 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)

Ardından çöplüğünüzü almak için:

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

CENTOS 6 /etc/my.cnf, [mysqld] bölümünde, doğru sözdizimi şöyledir:

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

Sorununuzla biraz alakasız, bu yüzden burada Google için bir tane var.

SQL'e mysqldump yapmadıysanız, SQL'iniz bozuk olabilir. 

Bu hatayı yanlışlıkla kodumda kapatılmamış bir dize değişkeni ile aldım. Özensiz parmaklar olur.

Bu kaçak bir dize almak için harika bir hata mesajı, bu MySQL için teşekkürler!

4
jplindstrom

Gibi bir komut veren bir max_allowed_packet değişkeni kullanın

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

4

Bazen ayar yazın:

max_allowed_packet = 16M

my.ini içinde çalışmıyor. 

My.ini dosyasını aşağıdaki gibi belirlemeye çalışın:

set-variable = max_allowed_packet = 32M

veya

set-variable = max_allowed_packet = 1000000000

Ardından sunucuyu yeniden başlatın:

/etc/init.d/mysql restart

Bir saldırgan daha büyük boyutlu paketleri itip sistemi çökertebileceğinden max_allowed_packet'un daha yüksek değerde olması bir güvenlik riskidir. 

Bu nedenle, ayarlanacak ve test edilecek max_allowed_packet değerinin Optimum Değeri.

Gerektiğinde değiştirmek (set global max_allowed_packet = xxx kullanarak) , My.ini veya my.conf 'ın bir parçası olmaktan daha iyidir.

1
Shiva

Hata:

HATA 1153 (08S01) 6772 satırında: Bir pakette 'max_allowed_packet' bytes İşlem 1 çıkış koduyla başarısız oldu.

SORGU:

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

Maksimum değer:

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

Max_allowed_packet öğesini, mysqldump ile attığınızdaki ile aynı (veya daha fazla) olarak ayarlayın. Bunu yapamıyorsanız, dökümü daha küçük bir değerle tekrar yapın.

Yani, mysqldump ile attığını farz ediyorum. Başka bir araç kullandıysan, kendi başınasın.

0
MarkR

Paylaşılan bir barındırma ortamında çalışıyorum ve Drupal merkezli bir web sitesine ev sahipliği yaptım. my.ini dosyasını veya my.conf dosyasını da düzenleyemiyorum.

Böylece, Cache ile ilişkili tüm tabloları sildim ve bu sorunu çözebilirim. Yine de bu problemle başa çıkmak için mükemmel bir çözüm/yol arıyorum.

Edit - Benim için sorun yarattı tabloları silmek, coz Drupal bu tabloların mevcut olmasını bekliyordu. Böylece sorunu çözen bu tabloların içeriğini boşalttım.

0