bugzilla安装错误:“InnoDB已禁用您的MySQL安装,Bugzilla需要启用InnoDb。”即使innodb已启用

问题描述:

我已经在我的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

我终于解决了这个问题。解决这个问题有两种选择:一种是安装比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

这里是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

我只是从“NE改变检查“到”eq“这是完全错误的,但显然会给出正确的行为。