无法在MySQL 5.5.25中设置max_allowed_pa​​cket

Ahm*_*aya 5 mysql database

虽然我可以通过在my.ini文件中插入"max_allowed_pa​​cket = 100M"行来设置此值,但我无法在MYSQL命令提示符中设置"max_allowed_pa​​cket"变量.为什么我有以下警告?

mysql> SHOW VARIABLES LIKE 'max_allowed_packet';
+--------------------+---------+
| Variable_name      | Value   |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+
1 row in set (0.00 sec)

mysql> warnings
Show warnings enabled.
mysql> set global max_allowed_packet=123456000;
Query OK, 0 rows affected, 1 warning (0.00 sec)

Warning (Code 1292): Truncated incorrect max_allowed_packet value: '123456000'
mysql> SHOW VARIABLES LIKE 'max_allowed_packet';
+--------------------+---------+
| Variable_name      | Value   |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+
1 row in set (0.00 sec)

mysql>
Run Code Online (Sandbox Code Playgroud)

我也尝试过以下小尺寸.

mysql> set global max_allowed_packet=123456;
Query OK, 0 rows affected, 1 warning (0.00 sec)

Warning (Code 1292): Truncated incorrect max_allowed_packet value: '123456'
mysql>

mysql> set session max_allowed_packet=123456;
ERROR 1621 (HY000): SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
Warning (Code 1292): Truncated incorrect max_allowed_packet value: '123456'
Error (Code 1621): SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
Run Code Online (Sandbox Code Playgroud)

MySQL版本

    mysql> SHOW VARIABLES LIKE "%version%";
+-------------------------+------------------------------+
| Variable_name           | Value                        |
+-------------------------+------------------------------+
| innodb_version          | 1.1.8                        |
| protocol_version        | 10                           |
| slave_type_conversions  |                              |
| version                 | 5.5.25                       |
| version_comment         | MySQL Community Server (GPL) |
| version_compile_machine | x86                          |
| version_compile_os      | Win64                        |
+-------------------------+------------------------------+
7 rows in set (0.00 sec)

mysql>
Run Code Online (Sandbox Code Playgroud)

pfr*_*sen 6

我注意到你必须使用1024的倍数来接受值:

值2048001失败:

mysql> set global max_allowed_packet=2048001;
Query OK, 0 rows affected, 1 warning (0.00 sec)

Warning (Code 1292): Truncated incorrect max_allowed_packet value: '2048001'
Run Code Online (Sandbox Code Playgroud)

但值为2048000的工作原理:

mysql> set global max_allowed_packet=2048000;
Query OK, 0 rows affected (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

手册说以下,但它似乎是"四舍五入"为设计不工作:

该值应为1024的倍数; nonmultiples向下舍入到最接近的倍数.

  • 尝试2048000时我没有给出错误,但更改没有出现.SHOW VARIABLES LIKE'max_allowed_pa​​cket'; (3认同)

Ahm*_*aya 4

http://bugs.mysql.com/bug.php?id=22891http://bugs.mysql.com/bug.php?id=32223 的结论是 max_allowed_pa​​cket 应该只是一个启动参数。