Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PG::UndefinedTable: ERROR: relation "active_storage_blobs" does not exist

Updated app Rails 5.2 to 6, the following two migrations were added by the update:

    # This migration comes from active_storage (originally 20190112182829)
    class AddServiceNameToActiveStorageBlobs < ActiveRecord::Migration[6.0]
  def up
    unless column_exists?(:active_storage_blobs, :service_name)
      add_column :active_storage_blobs, :service_name, :string

      if configured_service = ActiveStorage::Blob.service.name
        ActiveStorage::Blob.unscoped.update_all(service_name: configured_service)
      end

      change_column :active_storage_blobs, :service_name, :string, null: false
    end
  end
end

and

# This migration comes from active_storage (originally 20191206030411)
class CreateActiveStorageVariantRecords < ActiveRecord::Migration[6.0]
  def up
    create_table :active_storage_variant_records do |t|
      t.belongs_to :blob, null: false, index: false
      t.string :variation_digest, null: false

      t.index %i[ blob_id variation_digest ], name: "index_active_storage_variant_records_uniqueness", unique: true
      t.foreign_key :active_storage_blobs, column: :blob_id
    end
  end
end

trying to run the migrations gives the me error on the title. Haven't found anything online, any ideas on how to fix it?

like image 468
wachichornia Avatar asked Jan 22 '20 10:01

wachichornia


1 Answers

The active_storage_blobs table does not exist yet. You need to first run:

rails active_storage:install

This command will add 2 migrations for 2 tables: active_storage_attachments and active_storage_blobs.

These new migrations need to be run before the migrations you have above. There is a trick for this, you can consider manually changing the timestamp in the filenames of the 2 migrations you have above to one higher than the 2 new migrations active_storage:install will create.

Once all of this is sorted, run rake db:migrate

like image 136
Adim Avatar answered Oct 18 '22 05:10

Adim