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
大功告成。