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

pg::undefinedtable:error:表“table-name”不存在

广昊昊
2023-03-14

我在搞乱我的数据库,创建和删除表。在将迁移文件推送到Heroku后,我删除了几个迁移文件。之前,我创建了一个表'moms'。后来我想重命名它,所以我删除了'moms'并创建了新表'minutes_of_meetings'。我做了$rake db:migrate,一切都成功完成了,我的应用程序在localhost上运行得很好。

在将其推送到heroku之后,当我执行$heroku运行rake db:migrate时,它生成了以下日志:

  ActiveRecord::SchemaMigration Load (0.7ms)  SELECT "schema_migrations".* FROM "schema_migrations"
  Migrating to DropMoms (20150823142852)
  (0.6ms)  BEGIN
             == 20150823142852 DropMoms: migrating =========================================
                 -- drop_table(:moms)
             (0.9ms)  DROP TABLE "moms"
             PG::UndefinedTable: ERROR:  table "moms" does not exist
             : DROP TABLE "moms"
             (0.5ms)  ROLLBACK
             rake aborted!
             StandardError: An error has occurred, this and all later migrations canceled:

                                                                                     PG::UndefinedTable: ERROR:  table "moms" does not exist
             : DROP TABLE "moms"/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/postgresql/database_statements.rb:155:in `async_exec'
      /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/postgresql/database_statements.rb:155:in `block in execute'

我在heroku中创建了一个新表'moms',以便在迁移运行时删除它。我是这么做的:

$ heroku run Ruby console for rails-app-name >> ActiveRecord::Migration.create_table :moms 
class CreateMoms < ActiveRecord::Migration
  def change
    create_table :moms do |t|
      t.string :name
      t.timestamp null: false
    end
  end
end
Running `rake db:migrate:up` attached to terminal... up, run.1729
rake aborted!
VERSION is required
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.0/lib/active_record/railties/databases.rake:78:in `block (3 levels) in <top (required)>'
Tasks: TOP => db:migrate:up
(See full trace by running task with --trace)
WARNING: Toolbelt v3.41.3 update available.

在heroku上运行rake db:migrate:down

Running `rake db:migrate:down` attached to terminal... up, run.6389
rake aborted!
VERSION is required - To go down one migration, run db:rollback
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.0/lib/active_record/railties/databases.rake:86:in `block (3 levels) in <top (required)>'
Tasks: TOP => db:migrate:down
(See full trace by running task with --trace)
WARNING: Toolbelt v3.41.3 update available.

共有1个答案

司宏伯
2023-03-14

rake db:schema:load将从heroku数据库中删除所有数据。请确保在Heroku上有数据备份。如果您还没有heroku数据库的备份,您可以通过使用heroku PGBackups轻松地做到这一点

似乎您的架构搞乱了。只需使用rake db:schema:load将架构加载到数据库,然后再次运行迁移:

heroku run rake db:schema:load
heroku run rake db:migrate
 类似资料:
  • 问题内容: 我有以下代码: 而且我只想在此列不存在的情况下更改此表。 我正在尝试许多不同的方法,但是没有任何效果: 附带程序: 我在END IF中出错,然后在END中又在1中出错 我怎样才能使它尽可能简单? 问题答案: 在存储过程中使用以下命令:

  • “tasks:TOP=>db:migrate(请参阅使用--trace运行任务的完全跟踪) 我不理解这是怎么可能的,因为在方案文件中我没有post表。

  • 执行简单查询时出现操作符不匹配错误。这是什么原因造成的? 表定义:

  • 我的应用程序在生产环境中运行良好,但当我转到生产环境并运行“heroku run rake db:migrate”时,我会遇到以下错误: 但是,我的数据库中有一个“应用程序”表。这可能与我前几天放弃并重新制作应用程序脚手架有关。我该如何解决这个问题? 因此,当我运行rake:db安装程序时,我会看到以下结果: 我试图删除“创建应用程序”之前的两个。因此,我尝试像这样对heroku数据库进行rake

  • 问题内容: 有人知道您的表确实存在时,在什么条件下会收到错误? 我在5台服务器上使用了相同的代码,但我最近租用的服务器上只有一个显示此错误,因此我怀疑这可能是某种设置或安装错误。我可以从命令行执行我的sql语句。很显然,我也可以从命令行查看该表。建立连接时,我没有任何连接错误(我正在使用mysqli,btw)。 任何帮助,将不胜感激。 确切查询: 问题答案: 基本上,我认为我遇到的问题是由于密码哈

  • 在下面的示例中:https://github.com/confluentinc/kafka-streams-examples/blob/5.1.0-post/src/main/java/io/confluent/examples/streams/pageViewRegionexample.java有一个KStream和KTable连接。 在驱动程序https://github.com/conflu