How to change max_allowed_packet size

后端 未结 12 1582
星月不相逢
星月不相逢 2020-11-22 09:16

I am having a problem with BLOB fields in my MySQL database - when uploading files larger than approx 1MB I get an error Packets larger than max_allowed_packet are not

相关标签:
12条回答
  • 2020-11-22 09:40

    Many of the answerers spotted the issue and already gave the solution.

    I just want to suggest another solution, which is changing the Glogal variable value from within the tool Mysql Workbench. That is ofcourse IF you use Workbench running locally on server (or via SSH connection)

    You just connect to your instance and go on menu:

    Server -> Options File -> Networking -> max_allowed_packed

    You set the desired value and then you need to restart MySql Service.

    0 讨论(0)
  • 2020-11-22 09:43

    If getting this error while performing a backup, max_allowed_packet can be set in the my.cnf particularly for mysqldump.

    [mysqldump]
    max_allowed_packet=512M
    

    I kept getting this error while performing a mysqldump and I did not understand because I had this set in my.cnf under the [mysqld] section. Once I figured out I could set it for [mysqldump] and I set the value, my backups completed without issue.

    0 讨论(0)
  • 2020-11-22 09:43

    This error come because of your data contain larger then set value.

    Just write down the max_allowed_packed=500M or you can calculate that 500*1024k and use that instead of 500M if you want.

    Now just restart the MySQL.

    0 讨论(0)
  • 2020-11-22 09:43

    If you want upload big size image or data in database. Just change the data type to 'BIG BLOB'.

    0 讨论(0)
  • 2020-11-22 09:47

    For anyone running MySQL on Amazon RDS service, this change is done via parameter groups. You need to create a new PG or use an existing one (other than the default, which is read-only).

    You should search for the max_allowed_packet parameter, change its value, and then hit save.

    Back in your MySQL instance, if you created a new PG, you should attach the PG to your instance (you may need a reboot). If you changed a PG that was already attached to your instance, changes will be applied without reboot, to all your instances that have that PG attached.

    0 讨论(0)
  • 2020-11-22 09:53

    Following all instructions, this is what I did and worked:

    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)
    

    So, as we can see, the max_allowed_packet has been changed outside from my.ini.

    Lets leave the session and check again:

    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)
    

    Conclusion, after SET GLOBAL max_allowed_packet=1073741824, the server will have the new max_allowed_packet until it is restarted, as someone stated previously.

    0 讨论(0)
提交回复
热议问题