【问题标题】:ActiveRecord::PendingMigrationError after restore of local database from Heroku从 Heroku 恢复本地数据库后的 ActiveRecord::PendingMigrationError
【发布时间】:2014-01-21 08:27:47
【问题描述】:

当我使用以下脚本将数据库下载到本地 postgresql 数据库时,我在 Heroku 上有一个应用程序(它是最新的并且运行了最新的迁移):

heroku pgbackups:capture --expire --app myapp
echo "Captured database on heroku"
curl -o latest.dump `heroku pgbackups:url --app myapp`
echo "Downloaded database"
pg_restore --verbose --clean --no-acl --no-owner -h localhost -d cooking latest.dump
echo "Database restored"

然后我启动我的本地服务器,我收到如下错误:

ActiveRecord::PendingMigrationError 迁移待定;运行 'bin/rake db:migrate RAILS_ENV=development' 来解决这个问题。

我已尝试删除并重置我的旧数据库而不进行任何更改。

【问题讨论】:

  • 所有迁移都从本地代码库运行吗?错误是报告挂起的迁移。您的schema_migrationsversion 列是否与您的db/migrate 目录中的文件名前缀匹配?
  • 是的,我已经在本地运行它,甚至尝试过重置 - 但是我想从 Heroku 下载数据库并且错误再次出现。

标签: ruby postgresql heroku ruby-on-rails-4


【解决方案1】:

当数据库版本(可通过 Rails 中的 ActiveRecord::Migrator.current_version 或 SQL 中的 select max(version) from schema_migrations 访问)低于从 db/migrate 加载的最高迁移版本时会发生此错误,并且通常编码在文件的文件名中在那个目录中。

只要您之后用 Heroku 版本替换它,就运行迁移或重置数据库而言,您对数据库做了什么并不重要。此时,重要的是您的数据库内容与db/migrate 中的迁移相比如何。

【讨论】:

  • 我现在意识到我改变了迁移的数量,这就是它失败的原因,现在它可以工作了。
猜你喜欢
  • 2018-02-21
  • 2013-09-13
  • 2012-11-20
  • 2023-03-28
  • 2014-07-28
  • 2017-07-14
  • 2013-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多