2013-03-12 1 views
1

Я установил bugzilla4.2.5 в свою машину windows7. Когда я ruuning в checksetup.pl сценарий Bugzilla, он показывает, чтоОшибка установки 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". 

код segement не обозначено линией не в 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 shwing innodb, и он включен и установлен по умолчанию.

Я предполагаю, что ошибка bugzilla показывает ошибку, потому что SHOW VARIABLES LIKE '%have_innodb% возвращает пустой набор внутри кода в файле Mysql.pm.

http://bugs.mysql.com/bug.php?id=63383 Эта ссылка, показывающая, что переменная «has_innodb» удалена из MySQL 5.6.1. Означает ли это, что мне нужно установить более старую версию mysql, которая содержит переменную «has_innodb»? Пожалуйста, помогите мне решить проблему в установке bugzilla.

+0

Да, я встретил ту же проблему, когда я установил MySQL5.6. поэтому после установки MySQL 5.5 проблема исчезла. – Sean

+0

yes, thats right – rakhi

ответ

1

Я, наконец, исправил проблему. Для решения этой проблемы есть два варианта: One - установить более низкую версию MySQL, чем MySQL5.6, или изменить исходный код Bugzilla. В Mysql.pm вместо использования команды SHOW VARIABLES LIKE '% have_innodb%' используйте SHOW ENGINES, чтобы проверить, включен ли innodb и задано значение переменной $ innodb_on.

+0

thanx, это закончилось моим несчастьем. – Harbir

4

Вот изменение 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

0

Я просто изменил чек от «пе «к« eq », что совершенно неправильно, но, по-видимому, дает правильное поведение.