Heroku / Rails:PG ::未定义表:错误" [tablename]"在heroku rails migration

时间:2016-05-10 01:08:38

标签: ruby-on-rails ruby postgresql heroku database-migration

我的应用程序在生产中运行良好,但当我转移到生产并运行时,运行rake db:migrate',我收到以下错误:

    PG::UndefinedTable: ERROR:  table "applications" does not exist
    Migrating to DropApplications (20160509013805)
        (0.8ms)  BEGIN
    == 20160509013805 DropApplications: migrating             =================================
    -- drop_table(:applications)
       (1.1ms)  DROP TABLE "applications"
        (0.5ms)  ROLLBACK
    rake aborted!
     StandardError: An error has occurred, this and all later migrations    canceled:

     PG::UndefinedTable: ERROR:  table "applications" does not exist
   : DROP TABLE "applications"

然而,有一个'应用程序'我的数据库中的表。这一下降可能与我放弃然后前几天重新制作应用程序脚手架有关。我该如何解决这个问题?

      create_table "applications", force: :cascade do |t|
t.string   "name"
t.string   "gender"
t.date     "date_of_birth"
t.string   "gpa"
t.text     "essay"
t.datetime "created_at",    null: false
t.datetime "updated_at",    null: false
      end

所以当我运行rake:db setup时,我看到以下结果:

      Status   Migration ID    Migration Name
    --------------------------------------------------
       up     20160505200754  ********** NO FILE **********
       up     20160508234634  Create users
      up     20160508234945  Add devise to users
       up     20160509013805  ********** NO FILE **********
       up     20160509014328  ********** NO FILE **********
        20160509014911  Create applications

之前的两个"创建应用程序"我试图删除。所以,我试着像这样耙heroku数据库:$ heroku运行rake --trace db:migrate VERSION = 20151127134901但我仍然得到错误" drop tables" - 它试图进行20160509013805迁移。如何在没有文件的情况下完全删除这些迁移,以便它也不会尝试搜索这些迁移?提前谢谢。

3 个答案:

答案 0 :(得分:4)

您的迁移文件可能存在问题。如果您删除了一个但另一个相应的文件仍然存在,则可能导致此错误。我会评论,但我还没有声誉。

答案 1 :(得分:1)

重置heroku db:

Heroku不允许丢弃数据库。相反,你应该做heroku pg:reset。此命令需要您指定可由heroku pg:info,找到的DATABASE,然后您将获得如下输出:

=== DATABASE_URL
Plan:        Hobby-dev
Status:      Available
Connections: 0/20
PG Version:  9.4.4
Created:     2015-10-11 23:14 UTC
Data Size:   6.7 MB
Tables:      5
Rows:        0/10000 (In compliance)
Fork/Follow: Unsupported
Rollback:    Unsupported
Add-on:      postgresql-cubed-1838

获得上述输出后,使用heroku pg:reset命令并附加“Add-on”字段值。示例我将这样做:

$ heroku pg:reset postgresql-cubed-1838

答案 2 :(得分:0)

我遇到了这个问题,但是我所要做的就是运行heroku run rake db:migrate,因为自上次推送到Heroku以来,我已经更改了数据库。