1

我已经在我的 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 ENGINESshwing innodb 并且它已启用并设置为默认值。

我想 bugzilla 显示错误是因为SHOW VARIABLES LIKE '%have_innodb% 在 Mysql.pm 文件的代码中也返回了空集。

http://bugs.mysql.com/bug.php?id=63383此链接显示“have_innodb”变量已从 MySQL 5.6.1 中删除。这是否意味着我需要安装包含“have_innodb”变量的旧版本的 mysql?请帮我解决bugzilla安装中的问题。

4

3 回答 3

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');
}
}
于 2013-04-26T12:19:23.557 回答
1

I finally fixed the problem. There are two options for solve this issue: One is install a lower version of MySQL than MySQL5.6 or Change the Bugzilla source code. In the Mysql.pm, instead of using the command SHOW VARIABLES LIKE '%have_innodb%' use the SHOW ENGINES to check if innodb is enabled and set the the value to $innodb_on variable.

于 2013-03-22T07:45:58.953 回答
-1

我只是将检查从“ne”更改为“eq”,这是完全错误的,但显然给出了正确的行为。

于 2013-05-02T18:24:40.233 回答