从heroku导入postgres后,rails会强制在本地运行数据库迁移

时间:2019-06-14 05:55:07

标签: ruby-on-rails postgresql heroku

我正在尝试将我的数据库从heroku导入回本地。按照heroku上的命令,我可以在本地导入整个数据库。

但是,Rails回答我正在进行迁移,我应该运行bin/rails db:migrate RAILS_ENV=development。失败是因为表已经存在。

在heroku上:

heroku pg:info --app my_app
 ›   Warning: heroku update available from 7.22.7 to 7.24.4.
=== DATABASE_URL
Plan:                  Hobby-dev
Status:                Available
Connections:           0/20
PG Version:            11.2

本地化:

psql (PostgreSQL) 11.3

ActiveRecord::Migrator.current_version返回=> 20190608070435 并且db/schema.rb包含:

ActiveRecord::Schema.define(version: 2019_06_10_061746)

用ActiveRecord :: Migrator.current_version给出的版本代替该版本也无济于事。

不知道此问题来自何处。从Heroku导入后,我在本地具有正确的数据库,但是Rails看到了挂起的迁移。

1 个答案:

答案 0 :(得分:1)

Rails使用schema_migrations表来跟踪迁移。当缺少相应的迁移记录并且Rails尝试运行迁移时,可能会发生此问题。但这失败了,因为您已经在本地数据库中拥有了该表。

如果您确定本地拥有最新/最新的数据库,您可以做的一件事是运行迁移,但注释掉代码(即在迁移中)。注意:确保仅对表创建代码进行注释

例如

class <your migraton name> < ActiveRecord::Migration[4.2]
  def change
    # commented out code
  end
end

这样,Rails就会将schema_migrations表更新为正确的版本,并且不会再烦您(Rails假定您已经创建了表)。

然后取消注释迁移文件。