2017-05-05 50 views
0

在尝试解决我遇到的NoMethodError时,我在某处读取运行rake db:reset可能有助于解决问题的方法。我是Rails的新手,并且在不知道这会做什么的情况下犯了这个错误。当我运行它,它成功删除我的开发数据库(PosgreSQL),但随后打了一个致命的错误有以下消息:rake db:通过删除数据库中途重置失败

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文件,那么有可能重建我的数据库而不会进一步搞乱事情吗?或者有什么方法可以解决直接影响复位命令的问题吗?

+0

你可能想看到这个https://stackoverflow.com/questions/10301794/difference-between-rake-dbmigrate-dbreset-and-dbschemaload?rq=1 – fangxing

回答

0

我关于认证失败想通了我的问题。当我一个星期前第一次建立我的数据库时,我已将host:localhost添加到我的database.yml文件中以规避相同的问题。但是,我只是将它添加到我的开发数据库中,因为这是我到目前为止需要访问的全部内容。将host:localhost添加到文件中的其他两个数据库已解决了我的问题。

2

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

尝试运行之前设置你的RAILS_ENV:

RAILS_ENV=development rake db:reset

+0

我试过了,但仍然像以前一样得到相同的错误。 –

+0

尝试使用'RAILS_ENV = development'而不是'RAILS_ENV = dev' – zachdb86

相关问题