Defect #36766
closedDatabase migration from Redmine 0.8.7 or earlier fails
0%
Description
After import mysqldump from the old environment to get all the data and copy the files into the new environment and run
bundle exec rake db:migrate RAILS_ENV=production I got te following error:
== 20090503121505 PopulateMemberRoles: migrating ============================== rake aborted! StandardError: An error has occurred, all later migrations canceled: undefined method `inherit_members?' for #<Project:0x0000000005a426a8> /opt/rh/rh-ruby25/root/usr/share/gems/gems/activemodel-5.2.4.2/lib/active_model/attribute_methods.rb:430:in `method_missing' /data/redmine/sf-redmine_redmine-4.1.1/app/models/member_role.rb:72:in `block in add_role_to_subprojects' Please see details in the attached file. Environment: Redmine version 4.1.1.stable Ruby version 2.5.9-p229 (2021-04-05) [x86_64-linux] Rails version 5.2.4.2 Environment production Database adapter Mysql2 Mailer queue ActiveJob::QueueAdapters::AsyncAdapter Mailer delivery smtp SCM: Subversion 1.7.14 Git 1.8.3.1 Filesystem Redmine plugins: no plugin installed
MySQL Server version: 5.5.52 MySQL Community Server (GPL) ------------- Old Environment Redmine 0.8.7.stable (MySQL) Server version: 5.0.83-community-log MySQL Community Edition (GPL)
Files
Related issues
Updated by C S over 2 years ago
Hi there,
Unfortunately, I can't help you directly, but my approach to problems like this is to try not to upgrade in such big steps. I would try upgrading to version 1.2 first... https://www.redmine.org/projects/redmine/wiki/RedmineUpgrade/46
Updated by Go MAEDA over 2 years ago
- Related to Defect #19174: db migrate error from old version to 2.6 added
Updated by Go MAEDA over 2 years ago
Could you check if changing app/models/member_role.rb
as follows fixes the problem?
Index: app/models/member_role.rb
===================================================================
--- app/models/member_role.rb (リビジョン 21454)
+++ app/models/member_role.rb (作業コピー)
@@ -69,7 +69,7 @@
def add_role_to_subprojects
member.project.children.each do |subproject|
- if subproject.inherit_members?
+ if subproject.try(:inherit_members?)
child_member = Member.find_or_new(subproject.id, member.user_id)
child_member.member_roles << MemberRole.new(:role => role, :inherited_from => id)
child_member.save!
Updated by Go MAEDA over 2 years ago
- File 36766.patch 36766.patch added
The reason the error occurs is that when executing migration 20090503121505_populate_member_roles.rb, the callback for the MemberRole model attempts to access columns in the projects table that are created in later migrations.
The problem can be fixed by replacing Member.create!
with Member.insert!
in the migration to avoid extra callback execution.
Updated by Bernhard Kotzur over 2 years ago
Hello Go MAEDA,
first thank you very much for your support!
Changing the app/models/member_role.rb as described above fixes the problem.
I was able to migrate the db without any further errors.
Now I see you provide a 36766.patch for this issue.
What is the best way for further migrations? Apply the 36766.patch or edit the app/models/member_role.rb file or both?
Thanks in advance.
Updated by Go MAEDA over 2 years ago
Bernhard Kotzur wrote:
Now I see you provide a 36766.patch for this issue.
What is the best way for further migrations? Apply the 36766.patch or edit the app/models/member_role.rb file or both?
Applying the 36766.patch is better. That is the fundamental measure. Changes for app/models/member_role.rb is just a quick workaround.
Updated by Go MAEDA over 2 years ago
- Subject changed from db migrate error from 0.8.7 version to 4.1.1 to Database migration from Redmine 0.8.7 or earlier fails
- Target version set to 4.1.7
Setting the target version to 4.1.7.
Updated by Go MAEDA over 2 years ago
- Status changed from New to Resolved
- Assignee set to Go MAEDA
- Resolution set to Fixed