rake db:reset在删除数据库的过程中失败了

时间:2017-05-05 00:40:29

标签: ruby-on-rails database postgresql

为了解决我遇到的NoMethodError,我在某处读到运行rake db:reset可能有助于解决问题。我是Rails的新手并且错误地做了这个,却不知道这会做什么。当我运行它时,它成功地删除了我的开发数据库(PosgreSQL),但随后它发出致命错误,并显示以下消息:

Dropped database 'development'
FATAL:  Peer authentication failed for user "postgres"
Couldn't drop database 'test'
rake aborted!
PG::ConnectionBad: FATAL:  Peer authentication failed for user "postgres"

Tasks: TOP => db:drop:_unsafe

我尝试手动删除测试数据库并重新运行rake db:reset,但是发生了同样的错误。所以我丢失了我在开发数据库中的数据,除了空的生产数据库之外什么都没有。

我意识到这可以通过编辑pg_hba.conf文件来修复,但我的应用程序正在我学校的高性能群集(Linux VM)上运行而且我没有写访问权限该文件。我不明白为什么它能够删除我的开发数据库,​​而不是其余的。

我仍然拥有seeds.rbschema.rb个文件,那么是否可以重建我的数据库而不会进一步搞乱?或者我有办法解决直接影响重置命令的问题吗?

2 个答案:

答案 0 :(得分:2)

rake db:reset运行db:dropdb:setupdb:drop删除当前RAILS_ENV的数据库。如果未设置RAILS_ENV,它将尝试删除开发和测试数据库。

尝试在运行之前设置RAILS_ENV:

RAILS_ENV=development rake db:reset

答案 1 :(得分:0)

我发现了有关身份验证失败的问题。当我在一周前首次设置数据库时,我已将host:localhost添加到我的database.yml文件中,以避免同样的问题。但是,我只将它添加到我的开发数据库中,因为到目前为止我只需要访问它。将host:localhost添加到文件中的其他两个数据库已解决了我的问题。