我在我的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安装中的问题。
答案 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”,这是完全错误的,但显然是正确的行为。