2013-05-31 3 views
5

У меня есть Bugzilla, установленная в течение нескольких лет без обновления. Версия, которую я использую, - 3.6.12. Сегодня я пытаюсь обновить его до последней версии 4.4, но не получится. Я следую инструкциям по обновлению Bugzilla с помощью bzr. Когда я запускаю checksetup.pl, он дает мне следующее:Невозможно обновить Bugzilla от 3,6 до 4,4

Updating column setter_id in table flags ... 

Old: mediumint 

New: mediumint NOT NULL 

Updating column setter_id in table flags ... 
Old: mediumint 
New: mediumint NOT NULL 

DBD::mysql::db do failed: Cannot change column 'setter_id': used in a foreign key constraint 'fk_flags_setter_id_profiles_userid' [for Statement "ALTER TABLE flags CHANGE COLUMN setter_id setter_id mediumint NOT NULL"] at Bugzilla/DB.pm line 710. 

Bugzilla::DB::bz_alter_column_raw('Bugzilla::DB::Mysql=HASH(0x8663790)', 'flags', 'setter_id', 'HASH(0xc9c8cd8)', 'HASH(0xc9c8ff0)', undef) called at Bugzilla/DB.pm line 669 

Bugzilla::DB::bz_alter_column('Bugzilla::DB::Mysql=HASH(0x8663790)', 'flags', 'setter_id', 'HASH(0xc9c8cd8)') called at Bugzilla/Install/DB.pm line 627 

Bugzilla::Install::DB::update_table_definitions('HASH(0x3050880)') called at C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\Bugzilla-bzr\checksetup.pl line 169 

Я плохо разбираюсь в Perl и базе данных. Я не знаю, что это значит. Может ли кто-нибудь дать мне руку? Заранее спасибо.

ответ

0

Вы задумывались о том, чтобы спросить ребят, которые это сделали? Наиболее вероятная причина заключается в том, что в какой-то момент между вашей текущей версией и версией, которую вы хотите установить, было добавлено не инкрементное обновление. Другими словами, вы не можете совершить прыжок с вашей версии на новую, не устанавливая, по крайней мере, одну из необходимых промежуточных версий. Информация об этом должна быть доступна разработчикам.

+0

Из инструкции Bugzilla загрузки страницы , говорится, что вы можете обновить прямо из любой старой версии Bugzilla до любой новой версии - вы делаете n ot должны обновиться до релизов между ними. Я попробую модернизировать снова. На этот раз я пытаюсь перейти с 3.6.12 до 4.0.9. У меня такая же ошибка. – Eagle

+0

Как уже упоминалось ранее, это именно то, что вам лучше всего обслуживать непосредственно с Bugzilla. Использование общих форумов для обсуждения вопросов о конкретных сценариях никогда не будет очень полезно. –

+0

Я обновил Bugzilla с версии 3.6 до 4.4, и я тоже получил эту ошибку. Я нашел решение, поэтому написал его здесь. – Arci

2

От https://groups.google.com/forum/#!topic/mozilla.support.bugzilla/w7nqD89cBaQ. Вы можете упасть таблица флагов (у меня есть эта таблица пуста) и воссоздать ее без ограничения внешнего ключа, запустите checksetup.pl и воссоздавать ограничение по команде:

alter table flags add CONSTRAINT `fk_flags_setter_id_profiles_userid`FOREIGN KEY (`setter_id`) 
REFERENCES `profiles` (`userid`) ON UPDATE CASCADE; 

Или редактировать файл DB.pm и добавить команду SET foreign_key_checks = 0 строку сразу после линия

$dbh = Bugzilla->dbh 
$dbh->do('SET foreign_key_checks = 0'); 

Так что я использовал другой способ. Я изменил свой дамп и изменил столбец setter_id на столбец NOT NULL. Линия

`setter_id` mediumint(9) DEFAULT NULL, 

в

`setter_id` mediumint(9) NOT NULL, 

Вот SQL команды для запуска после подключения к базе данных Bugzilla:

SET foreign_key_checks = 0; 
ALTER TABLE flags MODIFY setter_id mediumint(9) NOT NULL; 
SET foreign_key_checks = 1; 

Затем запустите checksetup.pl

+0

Я также столкнулся с этой проблемой при обновлении с Bugzilla 3.6 до 5.0. По предложению Арчи, моим решением было вручную отредактировать таблицу флагов и изменить setter_id на NOT NULL. Я не получал никаких ошибок, сохраняя это изменение в таблице. (Я использую GUID HeidiSQL, чтобы внести это изменение). Затем я снова запустил Bugzilla checksetup.pl и не столкнулся с этой ошибкой. –

Смежные вопросы