Cara mengubah ukuran max_allowed_packet

Saya mengalami masalah dengan bidang BLOB di database MySQL - ketika meng-upload file yang lebih besar dari sekitar 1MB saya mendapatkan error paket-Paket yang lebih besar dari max_allowed_packet tidak diperbolehkan.

Berikut adalah apa yang saya've mencoba:

Di MySQL Query Browser saya berlari menunjukkan variabel-variabel seperti 'max_allowed_packet' yang memberi saya 1048576.

Maka saya jalankan query set global max_allowed_packet=33554432 diikuti oleh menunjukkan variabel-variabel seperti 'max_allowed_packet' - itu memberi saya 33554432 seperti yang diharapkan.

Tapi ketika saya restart server MySQL secara ajaib kembali ke 1048576. Apa yang saya lakukan salah di sini?

Pertanyaan Bonus, adalah mungkin untuk kompres bidang BLOB?

Mengomentari pertanyaan (3)
Larutan

Perubahan saya.ini atau ~/.saya.cnf file dengan memasukkan satu baris di bawah [mysqld] atau [klien] bagian dalam file anda:

max_allowed_packet=500M

kemudian restart MySQL layanan dan anda selesai.

Lihat dokumentasi untuk informasi lebih lanjut.

Komentar (11)

The max_allowed_packet variabel yang dapat diatur secara global dengan menjalankan query.

Namun, jika anda tidak mengubah hal ini di.ini` file (seperti dragon112 disarankan), nilai akan me-reset ketika me-restart server, bahkan jika anda mengatur hal itu secara global.

Untuk mengubah max diperbolehkan paket untuk semua orang untuk 1GB sampai server restart:

SET GLOBAL max_allowed_packet=1073741824;
Komentar (10)

Salah satu junior saya pengembang memiliki masalah memodifikasi ini bagi saya jadi saya pikir saya akan memperluas hal ini secara lebih rinci untuk pengguna linux:

  1. buka terminal

  2. ssh root@YOURIP

  3. masukkan password root

  4. nano /etc/mysql/my.cnf (jika perintah ini tidak diakui melakukan hal ini terlebih dahulu atau mencoba vi kemudian ulangi: yum install nano )

  5. tambahkan baris: max_allowed_packet=256M (jelas menyesuaikan ukuran untuk apa pun yang anda butuhkan) di bawah [MYSQLD] bagian. Dia membuat kesalahan dengan menempatkan di bagian bawah file pertama sehingga tidak bekerja.

  1. Control + O (save) kemudian ENTER (konfirmasi) maka Control + X (exit file)

  2. service mysqld restart

  3. Anda dapat memeriksa perubahan dalam variabel-variabel pada bagian phpmyadmin

Komentar (4)

Saya pikir beberapa juga akan ingin tahu bagaimana untuk menemukan saya.ini file pada PC anda. Untuk pengguna windows, saya pikir cara terbaik adalah sebagai berikut:

  1. Win+R(shortcut untuk 'run'), ketik jasa.msc, Masukkan
  2. Anda bisa menemukan sebuah entri seperti 'MySQL56', klik kanan, pilih properti
  3. Anda bisa melihat sth seperti "D:/Program File/MySQL/MySQL Server 5.6/bin\mysqld" --default-file="D:\ProgramData\MySQL\MySQL Server 5.6\saya.ini" MySQL56

Saya mendapat jawaban dari http://bugs.mysql.com/bug.php?id=68516

Komentar (1)

Mengikuti semua instruksi, ini adalah apa yang saya lakukan dan bekerja:

mysql> SELECT CONNECTION_ID();//This is my ID for this session.
+-----------------+
| CONNECTION_ID() |
+-----------------+
|              20 |
+-----------------+
1 row in set (0.00 sec)

mysql> select @max_allowed_packet //Mysql do not found @max_allowed_packet
+---------------------+
| @max_allowed_packet |
+---------------------+
| NULL                |
+---------------------+
1 row in set (0.00 sec)

mysql> Select @@global.max_allowed_packet; //That is better... I have max_allowed_packet=32M inside my.ini
+-----------------------------+
| @@global.max_allowed_packet |
+-----------------------------+
|                    33554432 |
+-----------------------------+
1 row in set (0.00 sec)

mysql> **SET GLOBAL max_allowed_packet=1073741824**; //Now I'm changing the value.
Query OK, 0 rows affected (0.00 sec)

mysql> select @max_allowed_packet; //Mysql not found @max_allowed_packet
+---------------------+
| @max_allowed_packet |
+---------------------+
| NULL                |
+---------------------+
1 row in set (0.00 sec)

mysql> Select @@global.max_allowed_packet;//The new value. And I still have max_allowed_packet=32M inisde my.ini
+-----------------------------+
| @@global.max_allowed_packet |
+-----------------------------+
|                  1073741824 |
+-----------------------------+
1 row in set (0.00 sec)

Jadi, seperti yang bisa kita lihat, max_allowed_packet telah berubah di luar dari saya.ini.

Memungkinkan meninggalkan sesi dan periksa lagi:

mysql> exit
Bye

C:\Windows\System32>mysql -uroot -pPassword
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 21
Server version: 5.6.26-log MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SELECT CONNECTION_ID();//This is my ID for this session.
+-----------------+
| CONNECTION_ID() |
+-----------------+
|              21 |
+-----------------+
1 row in set (0.00 sec)

mysql> Select @@global.max_allowed_packet;//The new value still here and And I still have max_allowed_packet=32M inisde my.ini
+-----------------------------+
| @@global.max_allowed_packet |
+-----------------------------+
|                  1073741824 |
+-----------------------------+
1 row in set (0.00 sec)

Now I will stop the server
2016-02-03 10:28:30 - Server is stopped

mysql> SELECT CONNECTION_ID();
ERROR 2013 (HY000): Lost connection to MySQL server during query

Now I will start the server
2016-02-03 10:31:54 - Server is running

C:\Windows\System32>mysql -uroot -pPassword
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.6.26-log MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SELECT CONNECTION_ID();
+-----------------+
| CONNECTION_ID() |
+-----------------+
|               9 |
+-----------------+
1 row in set (0.00 sec)

mysql> Select @@global.max_allowed_packet;//The previous new value has gone. Now I see what I have inside my.ini again.
+-----------------------------+
| @@global.max_allowed_packet |
+-----------------------------+
|                    33554432 |
+-----------------------------+
1 row in set (0.00 sec)

Kesimpulan, setelah DITETAPKAN GLOBAL max_allowed_packet=1073741824, server akan memiliki baru max_allowed_packet sampai restart, sebagai seseorang yang dinyatakan sebelumnya.

Komentar (0)

Jika anda mendapatkan kesalahan ini saat melakukan backup, max_allowed_packet bisa diatur di.cnfterutama untukmysqldump`.

[mysqldump]
max_allowed_packet=512M

Aku terus mendapatkan kesalahan ini saat melakukan mysqldump dan aku tidak mengerti karena aku set di saya.cnf di bawah [mysqld] bagian. Setelah saya tahu saya bisa mengaturnya untuk [mysqldump] dan saya mengatur nilai, saya backup selesai tanpa masalah.

Komentar (0)

Bagi mereka yang menjalankan wamp server mysql

Wamp tray Icon -> MySql -> saya.ini

[wampmysqld]
port        = 3306
socket      = /tmp/mysql.sock
key_buffer_size = 16M
max_allowed_packet = 16M        // --> changing this wont solve
sort_buffer_size = 512K

Gulir ke bawah ke akhir sampai anda menemukan

[mysqld]
port=3306
explicit_defaults_for_timestamp = TRUE

Tambahkan garis packet_size di antara

[mysqld]
port=3306
max_allowed_packet = 16M
explicit_defaults_for_timestamp = TRUE

Memeriksa apakah itu bekerja dengan query ini

Select @@global.max_allowed_packet;
Komentar (0)

Banyak penjawab melihat masalah ini dan sudah memberikan solusi.

Saya hanya ingin menyarankan solusi lain, yang mengubah Glogal nilai variabel dari dalam alat Mysql Workbench. Yang tentunya JIKA anda menggunakan meja Kerja yang berjalan secara lokal pada server (atau melalui koneksi SSH)

Anda hanya terhubung ke anda contoh dan pergi pada menu:

Server -> Pilihan File -> Jaringan -> max_allowed_packed

Anda menetapkan nilai yang diinginkan dan kemudian anda perlu restart MySql Layanan.

Komentar (0)

Kesalahan ini datang karena data anda mengandung lebih besar dari nilai yang ditetapkan.

Hanya menuliskan max_allowed_packed=500M atau anda bisa menghitung bahwa 500*1024k dan menggunakan yang bukan 500M jika anda ingin.

Sekarang hanya me-restart MySQL.

Komentar (2)

Bagi siapa saja yang menjalankan MySQL di Amazon RDS service, perubahan ini dilakukan melalui parameter kelompok. Yang anda butuhkan untuk membuat yang baru PG atau menggunakan yang sudah ada (selain default, yang read-only).

Anda harus mencari max_allowed_packet parameter, perubahan nilai, dan kemudian tekan save.

Kembali di MySQL misalnya, jika anda membuat baru PG, anda harus melampirkan PG untuk anda contoh (anda mungkin perlu reboot). Jika anda berubah PG yang sudah terpasang untuk anda contoh, perubahan akan diterapkan tanpa reboot, semua contoh yang telah PG terlampir.

Komentar (0)

Jika anda ingin meng-upload gambar ukuran besar atau data dalam database. Hanya mengubah tipe data ke 'GUMPALAN BESAR'.

Komentar (0)