Сегодня я начал обновлять OTRS с версии 2.3 до 2.4, с 2.4 до 3.0 и с 3.0 до 3.1. Все прошло гладко, за исключением обновления с 3.0 до 3.1. OTRS предоставляет несколько сценариев Perl, которые упрощают обновление. Я использовал эти сценарии на каждом этапе обновления. Обновление с 3.0 до 3.1 завершается ошибкой в следующих случаях после использования сценария обновления.
scripts/DBUpdate-to-3.1.pl
Ошибка:
root@tickets:/opt/otrs# su - otrs
$ scripts/DBUpdate-to-3.1.pl
Migration started...
Step 1 of 24: Refresh configuration cache...
If you see warnings about 'Subroutine Load redefined', that's fine, no need to worry!
Subroutine Load redefined at /opt/otrs/Kernel/Config/Files/ZZZAAuto.pm line 5.
Subroutine Load redefined at /opt/otrs/Kernel/Config/Files/ZZZAuto.pm line 4.
done.
Step 2 of 24: Check framework version... done.
Step 3 of 24: Creating DynamicField tables (if necessary)... done.
DBD::mysql::db do failed: Cannot add or update a child row: a foreign key constraint fails (`pp_otrs`.`dynamic_field`, CONSTRAINT `FK_dynamic_field_create_by_id` FOREIGN KEY (`create_by`) REFERENCES `users` (`id`)) at /opt/otrs-3.1.10/Kernel/System/DB.pm line 478.
ERROR: OTRS-DBUpdate-to-3.1-10 Perl: 5.14.2 OS: linux Time: Wed Sep 5 15:36:20 2012
Message: Cannot add or update a child row: a foreign key constraint fails (`pp_otrs`.`dynamic_field`, CONSTRAINT `FK_dynamic_field_create_by_id` FOREIGN KEY (`create_by`) REFERENCES `users` (`id`)), SQL: 'INSERT INTO dynamic_field (name, label, field_order, field_type, object_type, config,
valid_id, create_time, create_by, change_time, change_by)
VALUES (?, ?, ?, 'Text', 'Ticket', '--- {}
', 1,
'2012-09-05 15:36:20'
, 1,
'2012-09-05 15:36:20'
, 1)'
Traceback (20405):
Module: main::_DynamicFieldCreation (v1.85) Line: 466
Module: scripts/DBUpdate-to-3.1.pl (v1.85) Line: 95
Could not create new DynamicField TicketFreeKey1 at scripts/DBUpdate-to-3.1.pl line 477.
Step 4 of 24: Create new dynamic fields for free fields (text, key, date)... $
Кто-нибудь еще сталкивался с такой же проблемой? заранее спасибо
Не могли бы вы выполнить инструкцию SQL:
SELECT id, login FROM users WHERE id < 5;
потому что я думаю, что вашего пользователя 1 больше не существует?