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 ENGINES、innodbを振ると、それが有効になり、デフォルトとして設定されます。

SHOW VARIABLES LIKE '%have_innodb% Mysql.pmファイルのコード内にも空のセットが返されるため、bugzillaがエラーを示していると思います。

http://bugs.mysql.com/bug.php?id=63383このリンクは、「have_innodb」変数がMySQL5.6.1から削除されたことを示しています。これは、「have_innodb」変数を含む古いバージョンのmysqlをインストールする必要があることを意味しますか?Bugzillaインストールの問題を解決するのを手伝ってください。

4

3 に答える 3

4

MySQL5.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

私はついに問題を修正しました。この問題を解決するには、2つのオプションがあります。1つは、MySQL5.6よりも低いバージョンのMySQLをインストールするか、Bugzillaソースコードを変更することです。Mysql.pmでは、コマンドSHOW VARIABLES LIKE'%have_innodb%'を 使用する代わりに、 SHOW ENGINESを使用してinnodbが有効になっているかどうかを確認し、値を$innodb_on変数に設定します。

于 2013-03-22T07:45:58.953 に答える
-1

チェックを「ne」から「eq」に変更しただけです。これは完全に間違っていますが、明らかに正しい動作をします。

于 2013-05-02T18:24:40.233 に答える