【问题标题】:PG::UndefinedTable: ERROR: relation 'caves' does not existPG::UndefinedTable: 错误: 关系“洞穴”不存在
【发布时间】:2017-11-16 15:45:31
【问题描述】:

我遇到了一个问题,我不知道如何解决这个问题。正在创建一个 Rails 视图,在填充我的视图并编辑我的控制器之后,我遇到了一个错误,指出 PG::UndefinedTable: ERROR: relation 'caves' does not exist

查看我所做的,我意识到我将模型创建为 cafe,但是当我填充我的架构表时,我不小心创建了一个名为 caves 而不是 cafes 的表。

这是我试图解决这个问题的方法。

  1. 我第一次尝试创建迁移只是将表从 caves 重命名为 cafes -- 仍然遇到同样的错误
  2. 然后我尝试一起删除架构表并一起创建一个名为 cafe 的新架构表 - 仍然遇到同样的错误
  3. 然后我尝试将我的数据库全部删除,想着我是否只是擦除了整个内容并重新开始(我刚刚开始使用这个 Rails 项目)。我跑了rake db:reset 只是遇到一个新错误告诉我ActiveRecord::StatementInvalid: PG::ObjectInUse: ERROR: database "cafe_database" is being accessed by other users
  4. 此时,我尝试重新启动我的 postgress 并运行 sudo service postgresql restart....但我的机器无法识别 service

有人知道我可以做些什么来解决这个问题吗?我的想法不多了。

【问题讨论】:

  • 首先,确保没有打开其他数据库会话。然后尝试@puneet 提到的内容。
  • 如何检查是否没有其他打开的数据库会话?这是通过运行 ps -aef | grep rails 并杀死任何 xtra pid 来完成的吗?
  • 手动检查所有rails crails s、命令行psql会话等并关闭它们。如果您仍然遇到问题,请查看devopsderek.com/blog/2012/11/13/…

标签: mysql ruby-on-rails ruby postgresql


【解决方案1】:

尝试以下步骤:

1. rake db:drop
2. rake db:create
3. rake db:migrate

【讨论】:

  • 这将彻底擦除数据库并从头开始。如果您在只有测试数据的开发环境中,这很好。但不要在实时环境中执行此操作,因为您会丢失所有数据。
猜你喜欢
  • 2016-03-18
  • 1970-01-01
  • 2020-05-08
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
  • 2013-10-06
  • 2021-02-05
  • 1970-01-01
相关资源
最近更新 更多