Today I've started upgrading OTRS from version 2.3 to 2.4 , 2.4 to 3.0 and 3.0 to 3.1. Everything went smoothly except the upgrade from 3.0 to 3.1 OTRS provides a few perl scripts which make the upgrade easier. I've used these scripts for each upgrade step. The upgrade from 3.0 to 3.1 fails at the following after using the upgrade script.
scripts/DBUpdate-to-3.1.pl
The error is :
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)... $
Did anyone else face the same issue? Thanks in advance
Can you please execute a SQL statement:
because I think your user 1 does no longer exist?