Reputation: 173
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}
Upvotes: 8
Views: 19995
Reputation: 964
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]')
Upvotes: 0
Reputation: 10396
[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.
Upvotes: 5
Reputation: 22972
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.
Upvotes: 2