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

时间:2013-03-12 11:05:15

标签: mysql innodb bugzilla

我在我的windows7机器上安装了bugzilla4.2.5。当我恢复bugzilla的checksetup.pl脚本时,它显示了

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中的行号指示的代码段落如下

 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此链接显示从MySQL 5.6.1中删除了“have_innodb”变量。 这是否意味着我需要安装包含“have_innodb”变量的旧版mysql? 请帮我解决bugzilla安装中的问题。

3 个答案:

答案 0 :(得分:4)

使用MySQL 5.6或更高版本时,这是bugzilla源代码更改

替换

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');
}
}

答案 1 :(得分:1)

我终于解决了这个问题。解决此问题有两种方法:一种是安装比MySQL5.6更低版本的MySQL或更改Bugzilla源代码。在Mysql.pm中,而不是使用命令 SHOW VARIABLES LIKE'%have_innodb%' 使用 SHOW ENGINES 检查innodb是否已启用,并将值设置为$ innodb_on变量。

答案 2 :(得分:0)

我只是将支票从“ne”更改为“eq”,这是完全错误的,但显然是正确的行为。