2013-03-12 41 views
1

我已經在我的windows7機器上安裝了bugzilla4.2.5。當我ruuning的Bugzilla的checksetup.pl腳本,它顯示出bugzilla安裝錯誤:「InnoDB已禁用您的MySQL安裝,Bugzilla需要啓用InnoDb。」即使innodb已啓用

Use of uninitialized value $innodb_on in string ne at Bugzilla/DB/Mysql.pm line no 330."InnoDB is disabled your MySQL installation. Bugzilla requires InnoDb to be enabled. Please enable it and then re-runchecksetup.pl". 

沒有在Mysql.pm由線表示的代碼segement如下

my ($innodb_on) = @{$self->selectcol_arrayref(
    q{SHOW VARIABLES LIKE '%have_innodb%'}, {Columns=>[2]})}; 
if ($innodb_on ne 'YES') { 
    die install_string('mysql_innodb_disabled'); 
} 

我的MySQL安裝的版本5.6.4-m7。我發現那個命令SHOW VARIABLES LIKE '%have_innodb%返回一個空集。但SHOW ENGINES甩了innodb,它啓用並設置爲默認值。

我想bugzilla會顯示錯誤,因爲SHOW VARIABLES LIKE '%have_innodb%也會在Mysql.pm文件中的代碼中返回空集。

http://bugs.mysql.com/bug.php?id=63383此鏈接顯示「has_innodb」變量已從MySQL 5.6.1中移除。 這是否意味着我需要安裝包含「have_innodb」變量的舊版本的mysql? 請幫我解決bugzilla安裝中的問題。

+0

是的,我安裝MySQL5.6時遇到同樣的問題。所以在我安裝MySQL 5.5之後,問題就沒有了。 – Sean 2013-03-17 23:15:42

+0

是的,多數民衆贊成在 – rakhi 2013-03-22 07:12:43

回答

1

我終於解決了這個問題。解決這個問題有兩種選擇:一種是安裝比MySQL5.6更低版本的MySQL或更改Bugzilla源代碼。在Mysql.pm中,而不是使用命令SHOW VARIABLES LIKE'%have_innodb%' 使用SHOW ENGINES檢查innodb是否已啓用並將該值設置爲$ innodb_on變量。

+0

thanx,這已經結束了我的痛苦。 – Harbir 2013-05-05 04:47:57

4

這裏是Bugzilla的源代碼變更期運用的MySQL 5.6或更高

更換時:

my ($innodb_on) = @{$self->selectcol_arrayref(
q{SHOW VARIABLES LIKE '%have_innodb%'}, {Columns=>[2]})}; 
if ($innodb_on ne 'YES') { 
    die install_string('mysql_innodb_disabled'); 
} 

有:

my ($innodb_on) = 
    grep{ $_->{engine} =~ m/InnoDB/i } 
    map { 
     my %hash; 
     @hash{ map { lc $_ } keys %$_ } = values %$_; 
     \%hash; 
    } 
    @{$self->selectall_arrayref("SHOW ENGINES", {Slice=>{}}) }; 
if ($innodb_on) { 
    if (!$innodb_on->{support} =~ m/YES|DEFAULT/i) { 
     die install_string('mysql_innodb_disabled'); 
} 
} 
+0

這已經結束了我的錯誤 – Harbir 2013-05-05 04:47:19

0

我只是從「NE改變檢查「到」eq「這是完全錯誤的,但顯然會給出正確的行爲。