致命:数据库“postgres”不存在

时间:2012-06-02 06:20:55

标签: ruby-on-rails postgresql

奇怪的错误。所有帮助赞赏。

这是我的database.yml

development:
  adapter: postgresql
  encoding: unicode
  database: app_development
  pool: 5
  username: username
  password:

test:
  adapter: postgresql
  encoding: unicode
  database: app_test
  pool: 5
  username: username
  password:

production:
  adapter: postgresql
  encoding: unicode
  database: app_production
  pool: 5
  username: username
  password:

当我手动创建数据库并尝试使用它们时,例如rake db:test:preare我收到以下错误:

FATAL:  database "postgres" does not exist

当我尝试删除数据库时,我收到以下错误:

Couldn't drop app_development : #<PG::Error: FATAL:  database "postgres" does not exist
>
Couldn't drop app_test : #<PG::Error: FATAL:  database "postgres" does not exist
>
Couldn't drop app_production : #<PG::Error: FATAL:  database "postgres" does not exist

如果我尝试使用rake db:create:all创建数据库,则会出现以下错误:

app_development already exists
app_test already exists
app_production already exists

所以看来我的database.yml没问题。但出于某种原因,它正在寻找一个名为postgres的数据库,当时这不是我的database.yml中的内容。

任何帮助表示感谢。

编辑:

这里有更多来自rake的痕迹:

无法为{“adapter”=&gt;“postgresql”,“encoding”=&gt;“unicode”,“database”=&gt;“app_production”,“pool”=&gt; 5,“用户名”创建数据库“=&gt;”用户名“,”密码“=&gt; nil}

3 个答案:

答案 0 :(得分:4)

[Mac OS X]在使用Linux时,我从未遇到PostGreSQL的任何问题。但是,我开始使用MacBook并得到与您相同的错误。所以...可能这不是你期望的解决方案,但是这个应用程序解决了我所有的麻烦。我只想和你们分享。

http://postgresapp.com/

答案 1 :(得分:2)

你没有说过你是否真的有一个postgres数据库,这就是错误所抱怨的。

可能不是,这个“rake”工具将用户postgres连接到数据库postgres,因此它可以创建新的数据库。显然,它需要作为某人做任何连接。

请花点时间浏览PostgreSQL手册,了解如何启用/控制日志记录。从长远来看,它将为您提供良好的服务。我猜也有rake / rails的调试/日志设置。

答案 2 :(得分:0)

我使用的是Mac OS X,但python和sqlalchemy也有同样的问题。 就像Flavio建议的一样,检查postgresapp并检查如何连接部分。

from sqlalchemy import create_engine
engine = create_engine('postgresql://localhost/[YOUR_DATABASE_NAME]')