我正在尝试将我的数据库从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看到了挂起的迁移。
答案 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假定您已经创建了表)。
然后取消注释迁移文件。