6

PostgreSQL を使用する Rails アプリを作成しようとしています。これが私がしたことの説明です。


PostgreSQL のセットアップ: Martin Pitt が管理するppa:pitti/postgresql
から PostgreSQL 9.1.3 をインストールしました。以前に PostgreSQL 8.4 がインストールされていました。まだインストールされているのか、なくなっているのかはわかりません。

  • Ubuntu アカウントと同じ名前のデータベースに、スーパーユーザー権限を持つデータベース ユーザーを追加しました。
  • でデータベースデーモンを起動しますsudo service postgresql start
  • Gerfried Fuchs によって管理されているppa:rhonda/pgadmin3からpgadmin3、バージョン 1.14.0 ベータ 1をインストールしました。
  • ユーザー アカウントとパスワード、およびポート 5433 を使用して、pgadmin3 経由で接続できます。

pg_hba.confの私の postgres 構成は次のとおりです (読みやすくするためにコメントを削除しました)。

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

Rails のセットアップ:
PostgreSQL を使用する Rails アプリケーションを作成したいと考えています。

  • RVM経由でRuby 1.9.3-p125をインストールしました。
  • Rails 3.2.3 を Gemset ruby​​-1.9.3-p125@global にインストールしました。
  • アプリケーション用に .rvmrc と Gemset を作成しました。
  • を介してRailsアプリケーションを作成しましたrails new my_test_app -d postgresql
  • 開発テスト用にconfig/database.ymluserで名前を構成し、productionを削除しました。password
  • config/database.ymlで構成host: localhostport: 5433ました。

これが私のconfig/database.ymlの内容です(読みやすくするためにコメントを削除しました)。

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

問題:
ただし、実行するbundle exec rake db:create:allと、次のエラー メッセージが表示されます。

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"}

質問:
pgadmin3 経由で正常に接続したときに使用するポートと異なるのはなぜですか?

4

4 に答える 4

20

@Riache: 最後に、テスト環境のデータベース構成で、 hostportの明示的な設定が欠落していることがわかりました。テスト環境に設定を追加した後、コマンドをbundle exec rake db:create:all正常に実行できました。
私は言わなければならない、彼らが開発環境のためにそれらの設定を提案するのは好きではないが、他の環境のためにそれらを追加しなかった. 私が証明したように、それはそれらを見逃す可能性が非常に高くなります.

test:
  adapter: postgresql
  encoding: unicode
  database: my_test_app_test
  pool: 5
  username: johndoe
  password: password
  host: localhost
  port: 5433
于 2012-04-21T23:57:00.247 に答える
1

psqlクライアント セッションが template1 ( psqlまたはpgAdminなど) にアクセスしている場合、 失敗rake db:migrate します。を実行する前に、すべてのセッションを閉じて rake db:migrateください。

于 2012-08-22T18:01:44.453 に答える