当前位置: 首页 > 知识库问答 >
问题:

Heroku/Rails: PG:: 未定义表:错误"[tablename]"在heroku rails迁移中不存在

云隐水
2023-03-14

我的应用程序在生产环境中运行良好,但当我转到生产环境并运行“heroku run 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安装程序时,我会看到以下结果:

      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数据库进行rake:$heroku运行rake--trace db:migrate VERSION=20151127134901,但我仍然得到“drop tables”的错误——它试图执行2016050901303805迁移。我怎样才能完全删除那些没有文件的迁移,这样它就不会试图去清理这些文件了?先谢谢你。

共有3个答案

曾修真
2023-03-14

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

厍兴腾
2023-03-14

重置heroku db:

Heroku不允许删除db。相反,您应该执行heroku pg:reset。此命令需要您指定可通过heroku pg:info,找到的数据库,然后您将获得如下输出:

=== 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:重置命令,附加“附加”字段值。例如,我会这样做:

$ heroku pg:reset postgresql-cubed-1838
叶福
2023-03-14

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

 类似资料:
  • 问题内容: 我正在尝试应用迁移,但出现错误: django.db.utils.OperationalError:(1050,“表’customers_customer’已经存在”) 我通过发出以下命令来获取此信息: 我的客户表已经存在,那么该怎么做才能让迁移知道这一点,而不是出错,然后对模型进行修改? 我在本地环境的本地数据库上运行了此文件,没有问题。当我将数据库指向生产环境并在上面运行时,出现此

  • 问题内容: 我在PHP中收到以下错误 注意未定义的偏移量1:在C:\ wamp \ www \ includes \ imdbgrabber.php第36行中 这是导致它的PHP代码: 错误是什么意思? 问题答案: 如果找不到匹配项,则为空数组。因此,您应该在访问之前检查是否找到了匹配项,例如:

  • Laravel版本:5.7 PHP版本: 7.2.9 数据库驱动程序 说明上次迁移创建表,但未在迁移表中注册 繁殖步骤我有14个迁移。如果我运行的表被创建,但没有注册为运行迁移我已经丢弃了家庭数据库几次 我的迁移状态表 最终,当我想刷新、回滚或迁移以进行开发时,我会收到这样一个错误,告诉我表存在,但不在迁移中 Illumb\Database\QueryException:SQLSTATE[42S0

  • 我将Rails5与PostgreSQL一起部署,以便在Heroku中免费应用程序。这是我在中的配置:

  • 问题内容: 在配置hibernate.cfg.xml中,我添加 Hibernate并在运行应用程序时自动创建表。但是,我通过运行drop table sql从数据库中手动删除该表。然后再次运行hibernate应用程序。出现异常 引起原因:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:表’test.person’不存在 解决该问

  • 我有一个Rails4.2和mysql数据库的项目。但当我执行<code>heroku运行rake db:migrate<code>时,结果是: 我的电脑里没有垃圾箱。 在我的heroku日志中,我有两个错误: