Saya mengimpor dump MySQL dan mendapatkan kesalahan berikut.
$ mysql foo < foo.sql
ERROR 1153 (08S01) at line 96: Got a packet bigger than 'max_allowed_packet' bytes
Rupanya ada lampiran dalam database, yang membuat sisipan sangat besar.
Ini ada di mesin lokal saya, Mac dengan MySQL 5 diinstal dari paket MySQL.
Di mana saya berubah max_allowed_packet
agar dapat mengimpor dump?
Apakah ada hal lain yang harus saya atur?
Hanya menjalankan mysql --max_allowed_packet=32M …
menghasilkan kesalahan yang sama.
Jawaban:
Anda mungkin harus mengubahnya untuk kedua klien (Anda menjalankan untuk melakukan impor) DAN daemon mysqld yang berjalan dan menerima impor.
Untuk klien, Anda dapat menentukannya di baris perintah:
Juga, ubah file my.cnf atau my.ini di bawah bagian mysqld dan setel:
atau Anda dapat menjalankan perintah ini di konsol MySQL yang terhubung ke server yang sama:
(Gunakan nilai yang sangat besar untuk ukuran paket.)
sumber
max_allowed_packet
ke 100 MB?Seperti michaelpryor mengatakan, Anda harus mengubahnya untuk kedua klien dan server mysqld daemon.
Solusi untuk baris perintah klien bagus, tetapi file ini tidak selalu berhasil, tergantung pada konfigurasi.
Jadi, buka terminal, ketik mysql untuk mendapatkan prompt mysql, dan jalankan perintah berikut:
Biarkan prompt mysql terbuka, dan jalankan eksekusi SQL baris perintah pada terminal kedua ..
sumber
Ini dapat diubah di
my.ini
file Anda (pada Windows, terletak di \ Program Files \ MySQL \ MySQL Server) di bawah bagian server, misalnya:sumber
Re my.cnf di Mac OS X saat menggunakan MySQL dari distribusi paket dmg mysql.com
Secara default, my.cnf tidak dapat ditemukan.
Anda perlu menyalin satu dari
/usr/local/mysql/support-files/my*.cnf
ke/etc/my.cnf
dan me-restartmysqld
. (Yang dapat Anda lakukan di panel preferensi MySQL jika Anda menginstalnya.)sumber
Di etc / my.cnf coba ubah max_allowed _packet dan net_buffer_length menjadi
jika ini tidak berhasil maka coba ubah ke
sumber
Cara mengatasinya adalah meningkatkan max_allowed_packet daemon MySQL. Anda bisa melakukan ini pada daemon yang sedang berjalan dengan masuk sebagai Super dan menjalankan perintah berikut.
Kemudian untuk mengimpor dump Anda:
sumber
Pada CENTOS 6 /etc/my.cnf, di bawah bagian [mysqld] sintaks yang benar adalah:
sumber
Gunakan
max_allowed_packet
variabel mengeluarkan perintah sepertimysql --max_allowed_packet=32M -u root -p database < dump.sql
sumber
Sedikit tidak terkait dengan masalah Anda, jadi ini satu untuk Google.
Jika Anda tidak mysqldump SQL, mungkin SQL Anda rusak.
Saya baru saja mendapatkan kesalahan ini dengan secara tidak sengaja memiliki string literal yang tidak tertutup dalam kode saya. Jari-jari ceroboh terjadi.
Itu pesan kesalahan yang luar biasa untuk dapatkan string yang dapat melarikan diri, terima kasih untuk MySQL itu!
sumber
max_allowed_packet
kesalahan. Jika itu membantu bagi mereka di masa depan, saya INSERTing menggunakan panda APIdf.to_sql(...)
Terkadang mengetik pengaturan:
di my.ini tidak berfungsi.
Coba tentukan my.ini sebagai berikut:
atau
Kemudian restart server:
sumber
Ini adalah risiko keamanan untuk memiliki
max_allowed_packet
nilai yang lebih tinggi, karena penyerang dapat mendorong paket berukuran lebih besar dan merusak sistem.Jadi, Nilai Optimal
max_allowed_packet
untuk disetel dan diuji.Adalah lebih baik untuk mengubah ketika diperlukan (menggunakan
set global max_allowed_packet = xxx
) daripada memilikinya sebagai bagian dari my.ini atau my.conf .sumber
Saya bekerja di lingkungan hosting bersama dan saya telah meng-host situs web berdasarkan Drupal. Saya tidak dapat mengedit
my.ini
file ataumy.conf
file juga.Jadi, saya menghapus semua tabel yang terkait
Cache
dan karenanya saya bisa menyelesaikan masalah ini. Saya masih mencari solusi / cara yang sempurna untuk menangani masalah ini.Sunting - Menghapus tabel yang menciptakan masalah bagi saya, karena Drupal mengharapkan bahwa tabel ini harus ada. Jadi saya mengosongkan isi tabel ini yang memecahkan masalah.
sumber
Kesalahan:
PERTANYAAN:
Nilai maksimum:
sumber
Setel max_allowed_packet ke yang sama (atau lebih) dari apa itu ketika Anda membuangnya dengan mysqldump. Jika Anda tidak dapat melakukannya, lakukan dump lagi dengan nilai yang lebih kecil.
Yaitu, dengan asumsi Anda membuangnya dengan mysqldump. Jika Anda menggunakan beberapa alat lain, Anda sendiri.
sumber