我发现如何使用max_allowed_packet
更改MySQL中SET GLOBAL
的默认值。但是,每次使用此命令时,默认值都保持不变!
我使用了这些命令:
mysql --user=root --password=mypass
mysql> SET GLOBAL max_allowed_packet=32*1024*1024;
Query OK, 0 rows affected (0.00 secs)
mysql> SHOW VARIABLES max_allowed_packet;
然后结果是max_allowed_packet = 1048576.我错过了什么?
答案 0 :(得分:39)
如果更改全局系统变量,则会记住该值并将其用于new 连接直到服务器重新启动。 (进行全局系统变量设置 永久,您应该在选项文件中设置它。)任何客户都可以看到更改 访问该全局变量。但是,更改会影响相应的会话 变量仅适用于更改后连接的客户端。全局变量确实如此 不会影响当前连接的任何客户端的会话变量(甚至不会 发出SET GLOBAL语句的客户端。)
也请参阅this。阅读Shane Bester的解释。
您应该从my.ini / my.cnf文件更改并重新启动服务器以使max_allowed_packet设置生效。
答案 1 :(得分:5)
运行后
set global max_allowed_packet=1000000000;
你必须在
之前重启mysqlSHOW VARIABLES LIKE 'max_allowed_packet'
将显示新值。
通过MAC OSX系统首选项重新启动mysql并且值没有更改时,我遇到此问题。所以通过控制台登录mysql
mysql -u root -p
更改它然后重新启动mySql似乎工作。可能是OS X的怪癖。
答案 2 :(得分:1)
只是快速查看遇到此问题的人的变量。要获得价值,您需要运行
SHOW VARIABLES LIKE 'max_allowed_packet'
答案 3 :(得分:1)
我也遇到了这个问题,就我而言,我安装了多个版本的MySql。
为可能在 mac 上使用homebrew设置MySql并在max_allowed_packet
文件中设置my.cnf
值时遇到麻烦的任何人添加此注释。
最有用的信息是my.cnf
文件可以出现在不同的位置(摘录自https://github.com/rajivkanaujia/alphaworks/wiki/Install-MySQL-using-Homebrew)-
/usr/local/etc/my.cnf --> Global Access
/usr/local/etc/my.cnf --> Global Access
/usr/local/Cellar/mysql/5.7.18/my.cnf --> Sever Level Access
~/.my.cnf --> User Level Access
自从我通过Home brew安装MySql 5.6以来,我就在-
/usr/local/Cellar/mysql\@5.6/5.6.43/my.cnf
遵循的步骤-
使用必要的/usr/local/Cellar/mysql\@5.6/5.6.43/my.cnf
-
[mysqld]
组下的max_allowed_packet value
文件
[mysqld]
max_allowed_packet=5G
使用brew服务重启mysql-
brew services restart mysql@5.6
连接/重新连接到mysql shell并使用-验证配置已生效
show variables like 'max_allowed_packet';
答案 4 :(得分:0)
对于具有MariaDb配置的用户,问题可能是 max_allowed_packet 变量被稍后称为的配置文件覆盖。
在我的情况下,我尝试导入数据库,服务器回答了我: 第736行的错误2006(HY000):MySQL服务器已消失
我发现该文件:
/etc/mysql/mariadb.conf.d/50-server.cnf
稍后再叫
/etc/mysql/conf.d/mysql.cnf
我尝试不断更改“ mysql.cnf”文件,但该值在“ 50-server.cnf”中被覆盖。
所以解决方案是输入文件
/etc/mysql/mariadb.conf.d/50-server.cnf
,而不是 “ max_allowed_packet = 1600万” 以期望值为例 “ max_allowed_packet = 64M”