From 417c625ab210ecfd6bb555fbec891fb9c3a40736 Mon Sep 17 00:00:00 2001 From: Eugeniu Tambur Date: Fri, 15 Mar 2019 12:54:42 +0100 Subject: Fix for migration active_storage migration *ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: relation "active_storage_attachments" does not exist* Updating to rails 6.0.0.beta3 if the command rake app:update is used a new migration file is generated: ```ruby # db/migrate/add_foreign_key_constraint_to_active_storage_attachments_for_blob_id.active_storage.rb class AddForeignKeyConstraintToActiveStorageAttachmentsForBlobId < ActiveRecord::Migration[6.0] def up unless foreign_key_exists?(:active_storage_attachments, column: :blob_id) add_foreign_key :active_storage_attachments, :active_storage_blobs, column: :blob_id end end end ``` **If the project does not have previously installed active storage** this mgiration causes an error: ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: relation "active_storage_attachments" does not exist **Error output:** PG::UndefinedTable: ERROR: relation "active_storage_attachments" does not exist activerecord-6.0.0.beta3/lib/active_record/connection_adapters/postgresql/database_statements.rb:90:in `async_exec' activerecord-6.0.0.beta3/lib/active_record/connection_adapters/postgresql/database_statements.rb:90:in `block (2 levels) in execute' activesupport-6.0.0.beta3/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads' activesupport-6.0.0.beta3/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares' activesupport-6.0.0.beta3/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads' activerecord-6.0.0.beta3/lib/active_record/connection_adapters/postgresql/database_statements.rb:89:in `block in execute' activerecord-6.0.0.beta3/lib/active_record/connection_adapters/abstract_adapter.rb:643:in `block (2 levels) in log' activerecord-6.0.0.beta3/lib/active_record/connection_adapters/abstract_adapter.rb:642:in `block in log' activesupport-6.0.0.beta3/lib/active_support/notifications/instrumenter.rb:23:in `instrument' activerecord-6.0.0.beta3/lib/active_record/connection_adapters/abstract_adapter.rb:633:in `log' activerecord-6.0.0.beta3/lib/active_record/connection_adapters/postgresql/database_statements.rb:88:in `execute' activerecord-6.0.0.beta3/lib/active_record/connection_adapters/abstract/schema_statements.rb:977:in `add_foreign_key' activerecord-6.0.0.beta3/lib/active_record/migration.rb:875:in `block in method_missing' activerecord-6.0.0.beta3/lib/active_record/migration.rb:843:in `block in say_with_time' activerecord-6.0.0.beta3/lib/active_record/migration.rb:843:in `say_with_time' activerecord-6.0.0.beta3/lib/active_record/migration.rb:864:in `method_missing' /db/migrate/20190315102607_add_foreign_key_constraint_to_active_storage_attachments_for_blob_id.active_storage.rb:5:in `up' activerecord-6.0.0.beta3/lib/active_record/migration.rb:816:in `exec_migration' activerecord-6.0.0.beta3/lib/active_record/migration.rb:797:in `block (2 levels) in migrate' activerecord-6.0.0.beta3/lib/active_record/migration.rb:796:in `block in migrate' activerecord-6.0.0.beta3/lib/active_record/connection_adapters/abstract/connection_pool.rb:416:in `with_connection' activerecord-6.0.0.beta3/lib/active_record/migration.rb:795:in `migrate' activerecord-6.0.0.beta3/lib/active_record/migration.rb:985:in `migrate' activerecord-6.0.0.beta3/lib/active_record/migration.rb:1293:in `block in execute_migration_in_transaction' activerecord-6.0.0.beta3/lib/active_record/migration.rb:1344:in `block in ddl_transaction' activerecord-6.0.0.beta3/lib/active_record/connection_adapters/abstract/database_statements.rb:265:in `block in transaction' activerecord-6.0.0.beta3/lib/active_record/connection_adapters/abstract/transaction.rb:272:in `block in within_new_transaction' activerecord-6.0.0.beta3/lib/active_record/connection_adapters/abstract/transaction.rb:270:in `within_new_transaction' activerecord-6.0.0.beta3/lib/active_record/connection_adapters/abstract/database_statements.rb:265:in `transaction' activerecord-6.0.0.beta3/lib/active_record/transactions.rb:212:in `transaction' activerecord-6.0.0.beta3/lib/active_record/migration.rb:1344:in `ddl_transaction' activerecord-6.0.0.beta3/lib/active_record/migration.rb:1292:in `execute_migration_in_transaction' activerecord-6.0.0.beta3/lib/active_record/migration.rb:1264:in `block in migrate_without_lock' activerecord-6.0.0.beta3/lib/active_record/migration.rb:1263:in `each' activerecord-6.0.0.beta3/lib/active_record/migration.rb:1263:in `migrate_without_lock' activerecord-6.0.0.beta3/lib/active_record/migration.rb:1211:in `block in migrate' activerecord-6.0.0.beta3/lib/active_record/migration.rb:1364:in `with_advisory_lock' activerecord-6.0.0.beta3/lib/active_record/migration.rb:1211:in `migrate' activerecord-6.0.0.beta3/lib/active_record/migration.rb:1044:in `up' activerecord-6.0.0.beta3/lib/active_record/migration.rb:1019:in `migrate' activerecord-6.0.0.beta3/lib/active_record/tasks/database_tasks.rb:191:in `migrate' activerecord-6.0.0.beta3/lib/active_record/railties/databases.rake:78:in `block (3 levels) in
' activerecord-6.0.0.beta3/lib/active_record/railties/databases.rake:76:in `each' activerecord-6.0.0.beta3/lib/active_record/railties/databases.rake:76:in `block (2 levels) in
' railties-6.0.0.beta3/lib/rails/commands/rake/rake_command.rb:23:in `block in perform' railties-6.0.0.beta3/lib/rails/commands/rake/rake_command.rb:20:in `perform' railties-6.0.0.beta3/lib/rails/command.rb:48:in `invoke' railties-6.0.0.beta3/lib/rails/commands.rb:18:in `
' bootsnap-1.4.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require' bootsnap-1.4.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `block in require_with_bootsnap_lfi' bootsnap-1.4.1/lib/bootsnap/load_path_cache/loaded_features_index.rb:83:in `register' bootsnap-1.4.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:20:in `require_with_bootsnap_lfi' bootsnap-1.4.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:29:in `require' activesupport-6.0.0.beta3/lib/active_support/dependencies.rb:297:in `block in require' activesupport-6.0.0.beta3/lib/active_support/dependencies.rb:263:in `load_dependency' activesupport-6.0.0.beta3/lib/active_support/dependencies.rb:297:in `require' bin/rails:4:in `
' --- ...oreign_key_constraint_to_active_storage_attachments_for_blob_id.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'activestorage') diff --git a/activestorage/db/update_migrate/20180723000244_add_foreign_key_constraint_to_active_storage_attachments_for_blob_id.rb b/activestorage/db/update_migrate/20180723000244_add_foreign_key_constraint_to_active_storage_attachments_for_blob_id.rb index 6830203cd6..844577d9c8 100644 --- a/activestorage/db/update_migrate/20180723000244_add_foreign_key_constraint_to_active_storage_attachments_for_blob_id.rb +++ b/activestorage/db/update_migrate/20180723000244_add_foreign_key_constraint_to_active_storage_attachments_for_blob_id.rb @@ -1,6 +1,8 @@ class AddForeignKeyConstraintToActiveStorageAttachmentsForBlobId < ActiveRecord::Migration[6.0] def up - unless foreign_key_exists?(:active_storage_attachments, column: :blob_id) + return if foreign_key_exists?(:active_storage_attachments, column: :blob_id) + + if table_exists?(:active_storage_attachments) && table_exists?(:active_storage_blobs) add_foreign_key :active_storage_attachments, :active_storage_blobs, column: :blob_id end end -- cgit v1.2.3