tracks icon indicating copy to clipboard operation
tracks copied to clipboard

Migration script 20130227205845_add_state_to_context not idempotent (respin)

Open Werkov opened this issue 4 years ago • 0 comments

This is a followup of #2400. I ran the migration from 2.4.1 to 2.5.1 and the migration failed with:

`rake db:migrate RAILS_ENV=production` (click for details)
root@host:/usr/local/tracks-2.5.1# rake db:migrate RAILS_ENV=production
/var/lib/gems/2.7.0/gems/mime-types-3.1/lib/mime/types/logger.rb:28: warning: `_1' is reserved for numbered parameter; consider another name
/var/lib/gems/2.7.0/gems/mime-types-3.1/lib/mime/types/logger.rb:28: warning: `_2' is reserved for numbered parameter; consider another name
/var/lib/gems/2.7.0/gems/mime-types-3.1/lib/mime/types/logger.rb:28: warning: `_3' is reserved for numbered parameter; consider another name
fatal: not a git repository (or any of the parent directories): .git
== 20130227205845 AddStateToContext: migrating ================================
-- add_column(:contexts, :state, :string, {:limit=>20, :null=>false, :default=>"active"})
rake aborted!
StandardError: An error has occurred, all later migrations canceled:

Mysql2::Error: Duplicate column name 'state'
/var/lib/gems/2.7.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:131:in `_query'
/var/lib/gems/2.7.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:131:in `block in query'
/var/lib/gems/2.7.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:130:in `handle_interrupt'
/var/lib/gems/2.7.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:130:in `query'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:201:in `block (2 levels) in execute'
/var/lib/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
/var/lib/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/var/lib/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:200:in `block in execute'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract_adapter.rb:722:in `block (2 levels) in log'
/var/lib/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/var/lib/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/var/lib/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/var/lib/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/var/lib/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract_adapter.rb:721:in `block in log'
/var/lib/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract_adapter.rb:712:in `log'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:199:in `execute'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/mysql/database_statements.rb:41:in `execute'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract/schema_statements.rb:591:in `add_column'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:890:in `block in method_missing'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:858:in `block in say_with_time'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:858:in `say_with_time'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:879:in `method_missing'
/usr/local/tracks-2.5.1/db/migrate/20130227205845_add_state_to_context.rb:7:in `up'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:831:in `exec_migration'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:812:in `block (2 levels) in migrate'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:811:in `block in migrate'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:471:in `with_connection'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:810:in `migrate'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1002:in `migrate'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1310:in `block in execute_migration_in_transaction'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1363:in `ddl_transaction'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1309:in `execute_migration_in_transaction'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1281:in `block in migrate_without_lock'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1280:in `each'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1280:in `migrate_without_lock'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1229:in `block in migrate'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1382:in `with_advisory_lock'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1229:in `migrate'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1061:in `up'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1036:in `migrate'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/tasks/database_tasks.rb:238:in `migrate'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/railties/databases.rake:86:in `block (3 levels) in <top (required)>'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/railties/databases.rake:84:in `each'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/railties/databases.rake:84:in `block (2 levels) in <top (required)>'
/usr/share/rubygems-integration/all/gems/rake-13.0.1/exe/rake:27:in `<top (required)>'

Caused by:
ActiveRecord::StatementInvalid: Mysql2::Error: Duplicate column name 'state'
/var/lib/gems/2.7.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:131:in `_query'
/var/lib/gems/2.7.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:131:in `block in query'
/var/lib/gems/2.7.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:130:in `handle_interrupt'
/var/lib/gems/2.7.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:130:in `query'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:201:in `block (2 levels) in execute'
/var/lib/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
/var/lib/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/var/lib/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:200:in `block in execute'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract_adapter.rb:722:in `block (2 levels) in log'
/var/lib/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/var/lib/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/var/lib/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/var/lib/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/var/lib/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract_adapter.rb:721:in `block in log'
/var/lib/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract_adapter.rb:712:in `log'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:199:in `execute'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/mysql/database_statements.rb:41:in `execute'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract/schema_statements.rb:591:in `add_column'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:890:in `block in method_missing'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:858:in `block in say_with_time'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:858:in `say_with_time'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:879:in `method_missing'
/usr/local/tracks-2.5.1/db/migrate/20130227205845_add_state_to_context.rb:7:in `up'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:831:in `exec_migration'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:812:in `block (2 levels) in migrate'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:811:in `block in migrate'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:471:in `with_connection'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:810:in `migrate'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1002:in `migrate'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1310:in `block in execute_migration_in_transaction'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1363:in `ddl_transaction'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1309:in `execute_migration_in_transaction'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1281:in `block in migrate_without_lock'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1280:in `each'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1280:in `migrate_without_lock'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1229:in `block in migrate'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1382:in `with_advisory_lock'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1229:in `migrate'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1061:in `up'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1036:in `migrate'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/tasks/database_tasks.rb:238:in `migrate'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/railties/databases.rake:86:in `block (3 levels) in <top (required)>'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/railties/databases.rake:84:in `each'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/railties/databases.rake:84:in `block (2 levels) in <top (required)>'
/usr/share/rubygems-integration/all/gems/rake-13.0.1/exe/rake:27:in `<top (required)>'

Caused by:
Mysql2::Error: Duplicate column name 'state'
/var/lib/gems/2.7.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:131:in `_query'
/var/lib/gems/2.7.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:131:in `block in query'
/var/lib/gems/2.7.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:130:in `handle_interrupt'
/var/lib/gems/2.7.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:130:in `query'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:201:in `block (2 levels) in execute'
/var/lib/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
/var/lib/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/var/lib/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:200:in `block in execute'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract_adapter.rb:722:in `block (2 levels) in log'
/var/lib/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/var/lib/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/var/lib/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/var/lib/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/var/lib/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract_adapter.rb:721:in `block in log'
/var/lib/gems/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract_adapter.rb:712:in `log'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:199:in `execute'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/mysql/database_statements.rb:41:in `execute'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract/schema_statements.rb:591:in `add_column'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:890:in `block in method_missing'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:858:in `block in say_with_time'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:858:in `say_with_time'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:879:in `method_missing'
/usr/local/tracks-2.5.1/db/migrate/20130227205845_add_state_to_context.rb:7:in `up'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:831:in `exec_migration'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:812:in `block (2 levels) in migrate'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:811:in `block in migrate'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:471:in `with_connection'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:810:in `migrate'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1002:in `migrate'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1310:in `block in execute_migration_in_transaction'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1363:in `ddl_transaction'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1309:in `execute_migration_in_transaction'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1281:in `block in migrate_without_lock'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1280:in `each'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1280:in `migrate_without_lock'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1229:in `block in migrate'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1382:in `with_advisory_lock'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1229:in `migrate'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1061:in `up'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/migration.rb:1036:in `migrate'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/tasks/database_tasks.rb:238:in `migrate'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/railties/databases.rake:86:in `block (3 levels) in <top (required)>'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/railties/databases.rake:84:in `each'
/var/lib/gems/2.7.0/gems/activerecord-6.0.3.3/lib/active_record/railties/databases.rake:84:in `block (2 levels) in <top (required)>'
/usr/share/rubygems-integration/all/gems/rake-13.0.1/exe/rake:27:in `<top (required)>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

Not sure if this is the information requested in #2400. Am I running the migration wrong? I ran it against the database from 2.4.1, mysql 8.0.22-0ubuntu0.20.04.3 and I had to "delete" the offending 20130227205845_add_state_to_context.rb again to successfully carry out the migration.

Werkov avatar Feb 14 '21 15:02 Werkov