Fedora 11 BugZilla出现max_allowed_packet is readonly


Fedora 11上安装BugZilla出现 max_allowed_packet is read-only问题的解决方法
问题描述:

当我运行已经安装完所有的perl模块以及MySQL数据库后,./checksetup.pl时错误提示如下:
DBD::mysql::db do failed: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value [for Statement "SET SESSION max_allowed_packet = 3276750"] at Bugzilla/DB/Mysql.pm line 113
 
Bugzilla::DB::Mysql::new('Bugzilla::DB::Mysql', 'bugs', 'bugs', 'localhost', 'bugs', 0, '') called at Bugzilla/DB.pm line 111

Bugzilla::DB::_connect('mysql', 'localhost', 'bugs', 0, '', 'bugs', 'bugs') called at Bugzilla/DB.pm line 96

Bugzilla::DB::connect_main() called at Bugzilla.pm line 317
Bugzilla::dbh('Bugzilla') called at ./checksetup.pl line 142

解决方法:

一、关闭selinux
因为自从Kernel 2.6开始,就有了SElinux(Security Enhance linux)安全加强的Linux. RHEL 4就有了SElinux的实现。Fedora11里当然也会

有SElinux,虽然安全,如果不满足其策略,它会阻止很多操作。所以干脆把它关掉。

编辑/etc/selinux/config文件

1.vi /etc/selinux/config
2.将SELINUX=enforcing改为SELINUX=disabled
3.:wq(保存退出)
4.reboot(重启)

二、注释对max_allow_packet的修改语句。
max_allow_packet本身的含义是客户端与服务器端交互数据最大值。默认是1G。
我在查阅Mysql menu时,有这样一句话:
On the client side, max_allowed_packet has a default of 1GB. ..... Beginning with MySQL 5.0.3, it also has a read-only

session scope
意思就是说max_allowed_packet has a default of 1GB.自从MySQL 5.0.3开始,http://ubuntuone.cn/这个参数就被设置为只读了。而Fedora 11默认安装的是MySQL

5.1.3。而Bugzilla/DB/Mysql.pm的还想修改max_allowed_packet=300M,这个是不行。
[for Statement "SET SESSION max_allowed_packet = 3276750"] at Bugzilla/DB/Mysql.pm line 113

所以按照提示我找到了Bugzilla/DB/Mysql.pm line 113行:

$self->do("SET SESSION max_allowed_packet = $max_allowed_packet");

并把这样注释掉,也就是在这行前面加上#。形式如下:
#$self->do("SET SESSION max_allowed_packet = $max_allowed_packet");

三、运行./checksetup.pl
大功告成。

相关内容