gtt-project / redmine_supply

Redmine plugin to enable supply management for issues.
GNU General Public License v3.0
1 stars 1 forks source link

Plugin uninstallation error #6

Closed sanak closed 2 years ago

sanak commented 2 years ago

Problem Plugin uninstallation was impossible due to the following error.

% bundle exec rake redmine:plugins:migrate VERSION=0 NAME=redmine_supply 
== 20210325123542 AddPositionToResourceItems: reverting =======================
-- remove_column(:resource_items, :position, :integer, {:default=>0})
   -> 0.0009s
== 20210325123542 AddPositionToResourceItems: reverted (0.0032s) ==============

== 20190831014300 AddStartDateAndEndDateToResourceItems: reverting ============
-- remove_column(:resource_items, :start_date)
   -> 0.0003s
-- remove_column(:resource_items, :end_date)
   -> 0.0003s
== 20190831014300 AddStartDateAndEndDateToResourceItems: reverted (0.0007s) ===

== 20190416032823 AddUsageFlagsToCategories: reverting ========================
-- remove_column(:resource_categories, :for_humans, :boolean, {:default=>false})
   -> 0.0005s
-- remove_column(:resource_categories, :for_assets, :boolean, {:default=>false})
   -> 0.0005s
== 20190416032823 AddUsageFlagsToCategories: reverted (0.0198s) ===============

== 20190415061747 MakeResourceItemCategoryOptional: reverting =================
-- change_column_null(:resource_items, :category_id, false)
   -> 0.0004s
== 20190415061747 MakeResourceItemCategoryOptional: reverted (0.0005s) ========

== 20190415023527 AddProjectIdToResourceItems: reverting ======================
-- remove_column(:resource_items, :project_id)
   -> 0.0005s
== 20190415023527 AddProjectIdToResourceItems: reverted (0.0006s) =============

== 20190412023433 AddTypeToResourceItems: reverting ===========================
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

This migration uses change_column, which is not automatically reversible.
To make the migration reversible you can either:
1. Define #up and #down methods in place of the #change method.
2. Use the #reversible method to define reversible behavior.

/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration/command_recorder.rb:88:in `inverse_of'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration/command_recorder.rb:73:in `record'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration/command_recorder.rb:100:in `change_column'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:871:in `block in method_missing'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:840:in `block in say_with_time'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:840:in `say_with_time'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:860:in `method_missing'
/Users/sanak/Build/rb/redmine40/plugins/redmine_supply/db/migrate/20190412023433_add_type_to_resource_items.rb:4:in `change'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:812:in `block in exec_migration'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:683:in `block (2 levels) in revert'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration/command_recorder.rb:61:in `revert'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:683:in `block in revert'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:848:in `suppress_messages'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:682:in `revert'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:812:in `exec_migration'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:798:in `block (2 levels) in migrate'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:797:in `block in migrate'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:416:in `with_connection'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:796:in `migrate'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:977:in `migrate'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:1292:in `block in execute_migration_in_transaction'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:1343:in `block in ddl_transaction'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/connection_adapters/abstract/database_statements.rb:267:in `block in transaction'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/connection_adapters/abstract/transaction.rb:239:in `block in within_new_transaction'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/connection_adapters/abstract/transaction.rb:236:in `within_new_transaction'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/connection_adapters/abstract/database_statements.rb:267:in `transaction'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/transactions.rb:212:in `transaction'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:1343:in `ddl_transaction'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:1291:in `execute_migration_in_transaction'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:1263:in `block in migrate_without_lock'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:1262:in `each'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:1262:in `migrate_without_lock'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:1210:in `block in migrate'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:1363:in `with_advisory_lock'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:1210:in `migrate'
/Users/sanak/Build/rb/redmine40/lib/redmine/plugin.rb:514:in `down'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:1015:in `migrate'
/Users/sanak/Build/rb/redmine40/lib/redmine/plugin.rb:536:in `migrate_plugin'
/Users/sanak/Build/rb/redmine40/lib/redmine/plugin.rb:477:in `migrate'
/Users/sanak/Build/rb/redmine40/lib/redmine/plugin.rb:488:in `migrate'
/Users/sanak/Build/rb/redmine40/lib/tasks/redmine.rake:135:in `block (3 levels) in <top (required)>'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/Users/sanak/.rbenv/versions/2.6.8/bin/bundle:23:in `load'
/Users/sanak/.rbenv/versions/2.6.8/bin/bundle:23:in `<main>'

Caused by:
ActiveRecord::IrreversibleMigration: 

This migration uses change_column, which is not automatically reversible.
To make the migration reversible you can either:
1. Define #up and #down methods in place of the #change method.
2. Use the #reversible method to define reversible behavior.

/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration/command_recorder.rb:88:in `inverse_of'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration/command_recorder.rb:73:in `record'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration/command_recorder.rb:100:in `change_column'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:871:in `block in method_missing'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:840:in `block in say_with_time'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:840:in `say_with_time'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:860:in `method_missing'
/Users/sanak/Build/rb/redmine40/plugins/redmine_supply/db/migrate/20190412023433_add_type_to_resource_items.rb:4:in `change'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:812:in `block in exec_migration'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:683:in `block (2 levels) in revert'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration/command_recorder.rb:61:in `revert'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:683:in `block in revert'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:848:in `suppress_messages'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:682:in `revert'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:812:in `exec_migration'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:798:in `block (2 levels) in migrate'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:797:in `block in migrate'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:416:in `with_connection'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:796:in `migrate'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:977:in `migrate'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:1292:in `block in execute_migration_in_transaction'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:1343:in `block in ddl_transaction'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/connection_adapters/abstract/database_statements.rb:267:in `block in transaction'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/connection_adapters/abstract/transaction.rb:239:in `block in within_new_transaction'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/connection_adapters/abstract/transaction.rb:236:in `within_new_transaction'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/connection_adapters/abstract/database_statements.rb:267:in `transaction'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/transactions.rb:212:in `transaction'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:1343:in `ddl_transaction'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:1291:in `execute_migration_in_transaction'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:1263:in `block in migrate_without_lock'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:1262:in `each'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:1262:in `migrate_without_lock'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:1210:in `block in migrate'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:1363:in `with_advisory_lock'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:1210:in `migrate'
/Users/sanak/Build/rb/redmine40/lib/redmine/plugin.rb:514:in `down'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.5/lib/active_record/migration.rb:1015:in `migrate'
/Users/sanak/Build/rb/redmine40/lib/redmine/plugin.rb:536:in `migrate_plugin'
/Users/sanak/Build/rb/redmine40/lib/redmine/plugin.rb:477:in `migrate'
/Users/sanak/Build/rb/redmine40/lib/redmine/plugin.rb:488:in `migrate'
/Users/sanak/Build/rb/redmine40/lib/tasks/redmine.rake:135:in `block (3 levels) in <top (required)>'
/Users/sanak/Build/rb/redmine40/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/Users/sanak/.rbenv/versions/2.6.8/bin/bundle:23:in `load'
/Users/sanak/.rbenv/versions/2.6.8/bin/bundle:23:in `<main>'
Tasks: TOP => redmine:plugins:migrate
(See full trace by running task with --trace)

To Reproduce Execute the following command.

$ bundle exec rake redmine:plugins:migrate VERSION=0 NAME=redmine_supply

Expectation Plugin's uninstallation should be finished without error.