Schienen: rake db:create:all keine Verbindung zu PostgreSQL-Datenbank

Ich versuche, erstellen Sie eine Rails-app, verwendet PostgreSQL. Hier ist eine Beschreibung von was ich getan habe.


PostgreSQL setup:
Ich installierte PostgreSQL 9.1.3 über die ppa:pitti/postgresql verwaltet von Martin Pitt. Es wurde PostgreSQL 8.4 installiert vor; ich bin nicht sicher, ob es noch installiert ist oder nicht.

  • Habe ich ein Datenbank-Benutzer mit superuser-Rechte auf der Datenbank hat den gleichen Namen wie meinem Ubuntu-account.
  • Ich starten Sie die Datenbank-daemon mit sudo service postgresql start.
  • Ich installiert pgadmin3, Version 1.14.0 Beta 1 über ppa:rhonda/pgadmin3 gepflegt von Gerfried Fuchs.
  • Ich kann eine Verbindung über pgadmin3 mit meinem user-account und Passwort und port 5433.

Meine postgres-Konfiguration in pg_hba.conf sieht wie folgt aus (Kommentare entfernt zur besseren Lesbarkeit).

[...]
local   all             postgres                                peer
local   all             all                                     peer
host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5

Rails setup:
Jetzt will ich erstellen Sie eine Rails-Anwendung, die verwendet PostgreSQL.

  • Ich installierte Ruby-1.9.3-p125 via RVM.
  • Ich installiert Rails 3.2.3 in dem Gemset ruby-1.9.3-p125@global.
  • Erstellt habe ich eine .rvmrc und Gemset für die Anwendung.
  • Erstellte ich eine Rails-Anwendung über rails new my_test_app -d postgresql.
  • Konfigurierte ich die user Namen und password im config/database.yml für Entwicklung und test und entfernt Produktion.
  • Ich konfiguriert host: localhost und port: 5433 im config/database.yml.

Hier ist der Inhalt meines config/database.yml (entfernt Kommentare für die Lesbarkeit).

development:
  adapter: postgresql
  encoding: unicode
  database: my_test_app_development
  pool: 5
  username: johndoe
  password: password    
  host: localhost
  port: 5433

test:
  adapter: postgresql
  encoding: unicode
  database: my_test_app_test
  pool: 5
  username: johndoe
  password: password

Problem:
Allerdings, wenn ich bundle exec rake db:create:all erhalte ich die folgende Fehlermeldung.

could not connect to server: No such file or directory
Is the server running locally and accepting connections on Unix domain socket
"/var/run/postgresql/.s.PGSQL.5432"?
[...]
Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode",
"database"=>"my_test_app_test", "pool"=>5, "username"=>"johndoe",
"password"=>"password"}

Frage:
Warum ist der port unterscheidet, die ich benutze, wenn ich erfolgreich eine Verbindung per pgadmin3?

Rails-app versucht, eine Verbindung über UNIX-socket anstelle des TCP socket localhost:5433. Es darf sich nicht Verhalten, so, wenn Sie die setup-Datenbank.yml richtig. Prüfen Sie den Inhalt der Datenbank.yml und sicherzustellen, dass die Schienen nicht diese Datei gelesen werden. Bitte geben Sie den Inhalt der Datenbank.yml. Sie können auch versuchen, verschiedene adapter (sqlite, zum Beispiel), um zu testen, ob die Einstellungen gilt.
Bedeutet das, dass ich, sollten Sie nicht verwenden port 5433 aber 5432 wurde in Datenbank.yml als eine auskommentierte Zeile?
Für die sind diejenigen, die Installation PG über Homebrew und Probleme, fand ich eine andere Antwort. Nur deinstallieren pg Edelstein und neu installieren mit Homebrew-configs. Finden Sie die Antwort im stackoverflow.com/a/19609228/1072058.

InformationsquelleAutor JJD | 2012-04-21

Schreibe einen Kommentar