【问题标题】:Deleted Migration Files and Heroku删除的迁移文件和 Heroku
【发布时间】:2018-11-12 05:22:40
【问题描述】:

我曾经问过这个问题,但没有得到有效的答复,我可能有更好的方法来问这个问题。

长话短说,我删除了一些有问题的迁移文件,(问题来自无序的迁移文件;在 create_stocks 文件之前有一个 add_column_to_stocks),但无论出于何种原因,heroku 仍然想要迁移这些旧的、已删除的文件。我不知道这些文件存储在哪里。

如果我执行 heroku db:migrate:status,这是响应:

Status   Migration ID    Migration Name
--------------------------------------------------
   up     20171231042756  Create articles
   up     20171231044214  Add description to articles
   up     20180116183526  Create users
   up     20180116191414  Add user to articles
   up     20180116195212  Add password digest to users
   up     20180305082108  Create categories
   up     20180305090315  Create article categories
  down    20180515064500  Add latest price to stocks
  down    20180517202216  Add timetables to stock
  down    20180517205823  Add updatedtime to stocks
  down    20180521021514  Create user stocks

问题从第一个下载文件开始。

我的本​​地迁移文件夹看起来更像这样:

20171231042756  Create articles
20171231044214  Add description to articles
20180116183526  Create users
20180116191414  Add user to articles
20180116195212  Add password digest to users
20180305082108  Create categories
20180305090315  Create article categories
20180515064499  Create stocks.rb
20180521021514  Create user stocks.rb

无论我对本地迁移文件进行什么更改,它都会继续迁移这些有问题的文件,所以我总是会得到响应:

PG::UndefinedTable: ERROR:  relation "stocks" does not exist
: ALTER TABLE "stocks" ADD "latest_price" decimal

我尝试进入 heroku psql 控制台并手动删除它们,但 delete from schema_migrations where version = 20180515064500 带回了 DELETE 0 响应,这意味着它没有删除任何内容。

我被难住了,我花了大约一个半星期的时间来解决这个问题。

提前谢谢大家!!任何帮助表示赞赏。

【问题讨论】:

  • 您尝试过删除并重新创建数据库吗? rails db:drop 然后 rails db:create & migrate
  • git rm db/migrate/20180515064500*.rb 并部署在 heroku 上。
  • 你也可以用ls -t db/migrate的结果更新问题
  • Sikandar Tariq,rails db:drop、create 和 migrate 会删除我应用程序上的所有数据吗?
  • 经过反复试验,您的回答@kiddorails 解决了我的问题。这是一个简单的 git rm 并将更改迁移到 heroku。感谢您的帮助!

标签: ruby-on-rails ruby database sqlite heroku


【解决方案1】:

迁移编号为20180515064500 的文件应该消失,因为它正在尝试修改不存在的表。

删除破坏迁移的文件:

git rm db/migrate/20180515064500*.rb

并部署在 heroku 上。

【讨论】:

    【解决方案2】:

    查看您的 db 文件中是否显示了您的 rails 版本(例如 5.2): 在您处于关闭模式的文件中。

    class CurrencyCreateUsers <ActiveRecord :: Migration [5.2]
    

    然后 rake db: 迁移

    【讨论】:

      猜你喜欢
      • 2013-01-26
      • 2021-06-09
      • 2019-04-09
      • 2015-08-08
      • 1970-01-01
      • 1970-01-01
      • 2013-10-10
      • 1970-01-01
      • 2016-12-16
      相关资源
      最近更新 更多