mysql – 如何追踪Drupal max_allowed_packet错误?
作者:互联网
我的一个临时站点最近开始在每个管理页面上喷出大量错误:
用户警告:获得的数据包大于’max_allowed_packet’字节查询:UPDATE cache_update SET data =’…’,created = 1298434692,expire = 1298438292,serialized = 1 WHERE cid =’update_project_data’in _db_query()(第141行) /var/www/vhosts/mysite/mypath/includes/database.mysqli.inc). (其中“……”大约有150万个字符的序列化数据)
我该如何追踪错误发生的位置?将调试代码添加到_db_query会有什么好处,因为它被调用了这么多?
解决方法:
不需要追踪它,因为你无法修复它我认为.
这是来自update.module的缓存,包含有关哪些模块具有更新版本的信息等.所以这来自该模块中的一个“_update_cache_set()”调用.
根据一个疯狂的猜测,我会说它是这个函数中的一个:http://api.drupal.org/api/drupal/modules–update–update.fetch.inc/function/_update_refresh/6
它基本上构建了一个巨大的数组,其中包含有关您站点上所有项目的信息,并尝试将其存储为单个序列化值.
您在此站点上安装了多少个模块?
我可以想到三种方法来“修复”这个错误:
>增加max_allowed_packet大小. (my.conf中的max_allowed_packet设置)
>禁用update.module(无论如何,当您需要首先在开发站点上进行更新时,它在暂存/生产站点上没有用)
>禁用一些模块;)
标签:mysql,caching,debugging,drupal,drupal-6 来源: https://codeday.me/bug/20190531/1188416.html