PG::UndefinedTable:错误:关系“active_storage_blob”不存在

Posted

技术标签:

【中文标题】PG::UndefinedTable:错误:关系“active_storage_blob”不存在【英文标题】:PG::UndefinedTable: ERROR: relation "active_storage_blobs" does not exist 【发布时间】:2020-05-08 11:57:35 【问题描述】:

将应用Rails 5.2更新到6,更新添加了以下两个迁移:

    # 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

# 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

尝试运行迁移会在标题上显示 me 错误。没有在网上找到任何东西,关于如何修复它的任何想法?

【问题讨论】:

【参考方案1】:

active_storage_blobs 表还不存在。您需要先运行:

rails active_storage:install

此命令将为 2 个表添加 2 个迁移:active_storage_attachmentsactive_storage_blobs

这些新的迁移需要在您进行上述迁移之前运行。有一个技巧,您可以考虑手动将上面 2 个迁移的文件名中的时间戳更改为比 active_storage:install 将创建的 2 个新迁移高一个。

所有这些都排序后,运行rake db:migrate

【讨论】:

非常感谢。我在同事的帮助下做过一次,一个人做,忘记了这一步。看了你的回答后我的反应是捂脸xD 我在从 Rails 6.0 升级到 6.1 时遇到了同样的错误。建议的答案奏效了——有点。就我而言,升级中创建的第二个(作为 OP 的问题)迁移与新创建的迁移冲突(前者实际上包含在后者中)。因此我需要删除 default 第二个迁移,并且迁移工作。万岁!顺便说一句,答案中的命令 railsrake 在 Rails 5+ 中应替换为 bin/rails 在将应用程序从 rails 6.1 升级到 7.0 时帮助我,最重要的部分是更新文件的时间戳。

以上是关于PG::UndefinedTable:错误:关系“active_storage_blob”不存在的主要内容,如果未能解决你的问题,请参考以下文章

PG undefinedtable 错误关系用户不存在

Rails PG::UndefinedTable: 错误: 缺少表的 FROM 子句条目

PG::UndefinedTable: 错误:缺少表“user_events”的 FROM 子句条目

ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: relation "geometry_columns" do

ActiveRecord中的表名损坏错误

Heroku / Rails:PG :: Undefined Table:错误“[tablename]”在heroku rails迁移上不存在