Saya mengalami masalah dengan bidang BLOB di database MySQL saya - ketika mengunggah file yang lebih besar dari kira-kira 1MB saya mendapatkan kesalahan Packets larger than max_allowed_packet are not allowed.
Inilah yang saya coba:
Di MySQL Query Browser saya menjalankan show variables like 'max_allowed_packet'
yang memberi saya 1048576.
Lalu saya menjalankan kueri set global max_allowed_packet=33554432
diikuti oleh show variables like 'max_allowed_packet'
- itu memberi saya 33554432 seperti yang diharapkan.
Tetapi ketika saya me-restart server MySQL, ajaibnya kembali ke 1048576. Apa yang saya lakukan salah di sini?
Pertanyaan bonus, apakah mungkin untuk mengompres bidang BLOB?
Jawaban:
Ubah file
my.ini
atau~/.my.cnf
dengan memasukkan satu baris di bawah[mysqld]
atau[client]
bagian dalam file Anda:kemudian restart layanan MySQL dan Anda selesai.
Lihat dokumentasi untuk informasi lebih lanjut.
sumber
[mysqld]
dan tidak[mysql]
(sangat mirip). Habiskan biaya beberapa menit untuk headscratching.The max_allowed_packet variabel dapat diatur secara global dengan menjalankan query.
Namun, jika Anda tidak mengubahnya dalam
my.ini
file (seperti yang disarankan dragon112), nilai akan diatur ulang ketika server restart, bahkan jika Anda mengaturnya secara global.Untuk mengubah paket maksimum yang dibolehkan untuk semua orang menjadi 1GB hingga server memulai ulang:
sumber
SHOW VARIABLES WHERE variable_name = 'max_allowed_packet'
masih menunjukkan nilai lamaSalah satu pengembang junior saya mengalami masalah dalam memodifikasi ini untuk saya jadi saya pikir saya akan memperluas ini secara lebih rinci untuk pengguna linux:
1) terminal terbuka
2) ssh root @ YOURIP
3) masukkan kata sandi root
4) nano /etc/mysql/my.cnf (jika perintah tidak dikenali lakukan ini dulu atau coba vi lalu ulangi: yum install nano)
5) tambahkan baris: max_allowed_packet = 256M (jelas sesuaikan ukuran untuk apa pun yang Anda butuhkan) di bawah bagian [MYSQLD]. Dia membuat kesalahan dengan meletakkannya di bagian bawah file terlebih dahulu sehingga tidak berfungsi.
6) Kontrol + O (simpan) lalu ENTER (konfirmasi) lalu Kontrol + X (file keluar)
7) service mysqld restart
8) Anda dapat memeriksa perubahan di bagian variabel di phpmyadmin
sumber
sudo: command not found
atauthis incident will be reported
karenasudo
belum diinstal dan dikonfigurasi. Akankah lebih baik untuk mengotori jawaban ini dengan instruksi pengaturansudo
untuk pertama kalinya?Saya pikir beberapa juga ingin tahu bagaimana menemukan file my.ini di PC Anda. Untuk pengguna windows, saya pikir cara terbaik adalah sebagai berikut:
Saya mendapat jawaban ini dari http://bugs.mysql.com/bug.php?id=68516
sumber
Mengikuti semua instruksi, inilah yang saya lakukan dan kerjakan:
Jadi, seperti yang bisa kita lihat, max_allowed_packet telah diubah di luar dari my.ini.
Mari kita tinggalkan sesi dan periksa lagi:
Kesimpulannya, setelah SET GLOBAL max_allowed_packet = 1073741824, server akan memiliki max_allowed_packet baru sampai dimulai kembali, seperti yang dinyatakan seseorang sebelumnya.
sumber
Jika mendapatkan kesalahan ini saat melakukan pencadangan,
max_allowed_packet
dapat diaturmy.cnf
untuk khususnyamysqldump
.Saya terus mendapatkan kesalahan ini saat melakukan a
mysqldump
dan saya tidak mengerti karena saya memiliki set ini dimy.cnf
bawah[mysqld]
bagian. Setelah saya tahu saya bisa mengaturnya[mysqldump]
dan saya mengatur nilainya, backup saya selesai tanpa masalah.sumber
Bagi mereka yang menjalankan wamp mysql server
Ikon Wamp tray -> MySql -> my.ini
Gulir ke bawah sampai akhir sampai kamu menemukan
Tambahkan baris packet_size di antaranya
Periksa apakah itu berfungsi dengan permintaan ini
sumber
Kesalahan ini terjadi karena data Anda mengandung lebih besar dari nilai yang ditetapkan.
Tuliskan saja
max_allowed_packed=500M
atau Anda dapat menghitung itu 500 * 1024k dan menggunakannya bukan 500 juta jika Anda mau.Sekarang baru restart MySQL.
sumber
/etc/my.cnf
untuk contoh MySQL, atau/etc/my.cnf.d/server.cnf
untuk MariaDBBanyak dari para penjawab melihat masalah itu dan sudah memberikan solusinya.
Saya hanya ingin menyarankan solusi lain, yang mengubah nilai variabel Glogal dari dalam alat Mysql Workbench . Itu tentu saja JIKA Anda menggunakan Workbench berjalan secara lokal di server (atau melalui koneksi SSH)
Anda cukup terhubung ke instance Anda dan masuk ke menu:
Anda menetapkan nilai yang diinginkan dan kemudian Anda perlu me - restart Layanan MySql .
sumber
Bagi siapa pun yang menjalankan layanan MySQL di Amazon RDS, perubahan ini dilakukan melalui grup parameter . Anda perlu membuat PG baru atau menggunakan yang sudah ada (selain default, yang hanya baca).
Anda harus mencari
max_allowed_packet
parameter, mengubah nilainya, dan kemudian tekan save.Kembali ke instance MySQL Anda, jika Anda membuat PG baru, Anda harus melampirkan PG ke instance Anda (Anda mungkin perlu reboot). Jika Anda mengubah PG yang sudah terpasang ke instance Anda, perubahan akan diterapkan tanpa reboot, ke semua instance Anda yang memiliki PG yang terpasang.
sumber
Jika Anda ingin mengunggah gambar atau data berukuran besar dalam basis data. Ubah saja tipe data menjadi
'BIG BLOB'
.sumber
atur global max_allowed_packet = 10000000000;
sumber