我正在运行一个drupal站点。我在我的网站中遇到错误用户警告:收到的数据包大于'max_allowed_packet'字节查询。我已经设置了高达128M的值。即使在报告同样的错误之后。值max_allowed_packet有最大限制吗?
这里有什么问题?为什么它不工作?
值max_allowed_packet有最大限制吗?
我正在运行一个drupal站点。我在我的网站中遇到错误用户警告:收到的数据包大于'max_allowed_packet'字节查询。我已经设置了高达128M的值。即使在报告同样的错误之后。值max_allowed_packet有最大限制吗?
这里有什么问题?为什么它不工作?
值max_allowed_packet有最大限制吗?
通常,这可以通过变量不是实际上正在效应 - 您进行配置更改引起的,但在错误的my.cnf,或者你忘了反弹的应用等
一个简单的方法来检查正在运行的MySQL实例是做这样的事情在shell:
中mysqladmin -u变量根-p
和你的root密码进入。这将会转储所有的当前变量(包括max_allowed_packet),并且会让你验证它的设置。如果它设置为128M,并且你仍然窒息它,那么你需要增加它 - 但它不太可能。
我在/etc/my.cnf中所做的更改没有得到体现。当我运行_mysqladmin变量时,-u root -p_max_allowed_packet被获得为1048576.从MySQL控制台进行的更改正在生效。但是,当MySQL重新启动时,max_allowed_packet会返回到1048576 – 2011-06-03 09:52:18
我们面临同样的问题,任何解决方案都有 – Mohsin 2016-04-07 10:49:28
编辑您的/etc/my.cnf
,添加max_allowed_packet
变量。
它应该是这样的:
[mysqld]
max_allowed_packet=1000000000
然后重新启动服务器。
这是出血性的边缘: set global max_allowed_packet = 1073741824;
虽然,在您的情况下设置它可能不是一个好主意。
作为附注,我遇到了mysqldump的这个错误,并且设置这个最大值并没有帮助。这奏效了:$ mysqldump的--max_allowed_packet = 999Mü根 - P表名>为table_name.sql
第一个是你需要设置max_allowed_packet的为128M在的my.cnf文件。
找到它,请在命令行中使用“找到my.cnf”命令。
文件应该是这样的:
#
!includedir /etc/my.cnf.d
#max_allowed_packet = 1024M
[mysqld]
port = 3306
key_buffer_size = 256M
# max_allowed_packet = 100M
table_open_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 16M
thread_concurrency = 8
bind-address = 202.90.158.47
# skip-networking
log = /var/log/mysql.access.log
log-error = /var/log/mysql.error.log
wait_timeout = 1
[mysqldump]
#max_allowed_packet = 101M
确保取消(该max_allowed_packet个= 128M行之前删除#符号)
最后,使用命令重新启动SQL“的/ etc/init.d/mysqld restart“
应该这样做。 :d
尝试设置max_allowed_packet = 128M
作为下[mysqld]
类的my.cnf最后一个选项。
当我把它作为第一个选项时,它不起作用,但是当我把它作为最后一个选项时,它就起作用了!我认为这是因为其他一些变数被覆盖max_allowed_packet
。
改变my.cnf中后,重启MySQL使用sudo service mysql restart
,并检查使用SHOW VARIABLES LIKE 'max_allowed_packet';
您需要设置的设置中,适用于你正在做的动作所有部分的设置,并始终将[ MySQLd]部分。该设置适用于您正在使用的元素的缓冲区。因此,在[MySQLd]下为您的MySQL服务器处理deamon linux/service上的窗口。如果你想用MySQLDump创建一个转储文件,可以在命令行中添加它作为参数,或者在my.ini中创建一个[MySQLDump]部分,并使用相同的参数使其永久生效。如果要再次使用MySQL再次导入转储,请使用命令行中的参数,或者在my.ini中再次使用相同的参数来创建一个[MySQL]部分,以使此工具的选择永久化。
我一直在谈论my.ini,因为我在windows上,但是在Linux上,这是my.cnf当然。
我决定在这里解释它,因为它花了我很多时间来解决这个问题,因为它没有解释任何地方。然而在例子中,我注意到一些ppl在多个部分下设置,所以我开始更多的谷歌,并发现部分之间的相关性和他们在做什么。现在我再也没有这个问题了,在大多数情况下,这里提到的128M的设置并不需要。但是,如果你的内存设置得足够高以至于不会对你的操作产生麻烦,那么这是服务器用于这个缓冲区的最大值。实际需要的大小比数据库中最大的记录大一点。
可能的共享原因:http://stackoverflow.com/questions/93128/mysql-got-a-packet-bigger-than-max-allowed-packet-bytes – 2011-06-02 15:11:28
您是否100%确定您已将max_allowed_packet设置为128 megs?通常,如果一个程序抱怨没有设置的东西 - 通常表示用户搞砸了。你是如何设置max_allowed_packts的? – 2011-06-02 15:11:57
看来这个变化没有得到体现。我在/etc/my.cnf文件中添加了max_allowed_packet = 128M。 但是,当我运行命令_ “显示变量,如 'max_allowed_packet的%';” _如 _max_allowed_packet 1048576_ 我试图从MySQL控制台中设置它 _mysql>设置max_allowed_packet的获得输出= 134216704; _ 但是,当我重新启动并再次检查设置变量是回到1048576. 如何设置max_allowed_packet永久? – 2011-06-03 09:43:52