8
votes

Weird error. All help appreciated.

Here's my 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:

When I create the databases manually and try to use them, for example rake db:test:preare I get the following error:

FATAL:  database "postgres" does not exist

When I try to drop the databases I get the following errors:

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

If I try to create the databases through with rake db:create:all I get the following errors:

app_development already exists
app_test already exists
app_production already exists

So it appears that my database.yml is ok. But for some reason it's looking for a database called postgres when that's not what's in my database.yml.

Any help appreciated.

EDIT:

Here is more from the trace of rake:

Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "database"=>"app_production", "pool"=>5, "username"=>"username", "password"=>nil}

3

3 Answers

2
votes

You've not said whether you actually have a postgres database, which is what the error is complaining about.

Presumably not, and this "rake" tool is connecting as user postgres to database postgres so it can create the new databases. Obviously it needs to connect as someone to do anything.

Do take the time to skim through the PostgreSQL manuals and understand how to enable/control logging. It'll serve you well in the long run. I'm guessing there is a debug/log setting for rake/rails too.

5
votes

[Mac OS X] I've never had any problem with PostGreSQL while using Linux. However, I started working with a MacBook and got the same error as you. So... Probably this is not the solution you were expecting for, but this one app solved all my headaches. I just wanted to share it with you guys.

http://postgresapp.com/

0
votes

I'm using Mac OS X, I had the same problem with python and sqlalchemy. Just like Flavio suggested, check postgresapp and check How to connect section.

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