Defect #36766
closed
Database migration from Redmine 0.8.7 or earlier fails
Added by Bernhard Kotzur over 2 years ago.
Updated over 2 years ago.
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 to Defect #19174: db migrate error from old version to 2.6 added
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!
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.
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.
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.
- 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.
- Status changed from New to Resolved
- Assignee set to Go MAEDA
- Resolution set to Fixed
- Description updated (diff)
- Status changed from Resolved to Closed
Also available in: Atom
PDF