Heroku/Rails: PG:: Undefined Table: error “[tablename]” does not exist on heroku rails migration
我的应用程序在生产中运行良好,但是当我转向生产并运行'heroku run rake db:migrate'时,我收到以下错误:
1 2 3 4 5 6 7 8 9 10 11 12 | 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" |
但是,我的数据库中有一个"应用程序"表。 这一下降可能与我放弃然后前几天重新制作应用程序脚手架有关。 我该如何解决?
1 2 3 4 5 6 7 8 9 | 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时,我看到以下结果:
1 2 3 4 5 6 7 8 | 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迁移。 如何在没有文件的情况下完全删除这些迁移,这样它也不会尝试耙这些迁移? 先感谢您。
您的迁移文件可能存在问题。 如果您删除了一个但另一个相应的文件仍然存在,则可能导致此错误。 我会评论,但我还没有声誉。
重置heroku db:
Heroku不允许丢弃数据库。 相反,你应该做
1 2 3 4 5 6 7 8 9 10 11 12 | === 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"字段值。 示例我将这样做:
1 | $ heroku pg:reset postgresql-cubed-1838 |