rake db:create
またはrake db:setup
を実行しようとしていますが、次のエラーが発生します。 rake db:create
は他のRailsプロジェクトを持つ他のフォルダから正常に機能しているため、奇妙です。
user:project user$ rake db:create
could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/activerecord- 3.1.0/lib/active_record/connection_adapters/postgresql_adapter.rb:991:in `initialize'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/activerecord- 3.1.0/lib/active_record/connection_adapters/postgresql_adapter.rb:991:in `new'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/activerecord-3.1.0/lib/active_record/connection_adapters/postgresql_adapter.rb:991:in `connect'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/activerecord-3.1.0/lib/active_record/connection_adapters/postgresql_adapter.rb:260:in `initialize'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/activerecord-3.1.0/lib/active_record/connection_adapters/postgresql_adapter.rb:27:in `new'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/activerecord-3.1.0/lib/active_record/connection_adapters/postgresql_adapter.rb:27:in `postgresql_connection'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/activerecord- 3.1.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:304:in `new_connection'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/activerecord-3.1.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:323:in `checkout_new_connection'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/activerecord- 3.1.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:265:in `block (2 levels) in checkout'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/activerecord- 3.1.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:261:in `loop'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/activerecord-3.1.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:261:in `block in checkout'
/Users/user/.rvm/rubies/Ruby-1.9.2-p290/lib/Ruby/1.9.1/monitor.rb:201:in `mon_synchronize'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/activerecord-3.1.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:260:in `checkout'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/activerecord-3.1.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:162:in `connection'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/activerecord-3.1.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:409:in `retrieve_connection'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/activerecord-3.1.0/lib/active_record/connection_adapters/abstract/connection_specification.rb:107:in `retrieve_connection'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/activerecord-3.1.0/lib/active_record/connection_adapters/abstract/connection_specification.rb:89:in `connection'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/activerecord-3.1.0/lib/active_record/railties/databases.rake:110:in `rescue in create_database'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/activerecord-3.1.0/lib/active_record/railties/databases.rake:54:in `create_database'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/activerecord- 3.1.0/lib/active_record/railties/databases.rake:42:in `block (2 levels) in <top (required)>'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `block in execute'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain'
/Users/user/.rvm/rubies/Ruby-1.9.2-p290/lib/Ruby/1.9.1/monitor.rb:201:in `mon_synchronize'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block (2 levels) in top_level'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block in top_level'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `block in run'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/bin/rake:19:in `load'
/Users/user/.rvm/gems/Ruby-1.9.2-p290/bin/rake:19:in `<main>'
Couldn't create database for {"adapter"=>"postgresql", "database"=>"project_test", "username"=>nil, "password"=>nil, "min_messages"=>"warning"}
これは私のdatabase.yml
です
development:
adapter: postgresql
database: project_development
username:
password:
min_messages: warning
test:
adapter: postgresql
database: project_test
username:
password:
min_messages: warning
production:
adapter: postgresql
database: project_production
username:
password:
min_messages: warning
Posgreeは/usr/local/var/postgres
に挿入されています。熊手は/var/pgsql_socket/
の代わりに同じフォルダーを探してみるべきではありませんか? (とにかく/ usr/local/var/pgsql_socketを持っていません)
解決しました!
解決策は、現在インストールされている宝石を更新するのが簡単でした。
別の解決策として、Host: localhost
またはdatabase.ymlファイルの開発設定で使用するホストを設定します。
Homebrewを介してMac OS XにPGをインストールしました(Mac OS Xでデフォルトになっていることに気付いていませんでした)が、同じ問題がありました。 Homebrew経由でpgをインストールする前にpg gemをインストールすることで、問題をさらに悪化させた可能性があります。
私は次のことを行うことでこの同じ問題を解決しました:
gem uninstall pg
gem install pg -- --with-pg-config=/usr/local/bin/pg_config
(pg設定でRailsプロジェクトを作成した場合、これはdatabase.yml構成ファイルで説明されています)そしてそれはうまくいった!
上記のzquintanaからの回答は、いくつかの小さな注意点でうまくいきました。
私の解決策(Homebrewを使用):
gem uninstall pg
brew uninstall postgresql
brew install postgresql
を再インストールしますログイン時にpostgresqlを起動するには:
ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
次に、今すぐpostgresqlをロードします。
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
または、launchctlが必要ない場合は、次のコマンドを実行します。
postgres -D /usr/local/var/postgres
ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
を実行しますlaunchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
次に、Homebrew configs gem install pg -- --with-pg-config=/usr/local/bin/pg_config
を使用してgemを再インストールします
rake db:create
を実行してください
同じ問題が発生し、次の方法でエラーを解決できました。
config/database.ymlに追加する
Host: localhost
http://postgresapp.com/documentation のトラブルシューティングセクションで推奨されている共有メモリ設定のリセット:
Sudo sysctl -w kern.sysv.shmall=65536
Sudo sysctl -w kern.sysv.shmmax=16777216
私の場合、これが必要なすべてでした: https://dba.stackexchange.com/a/75221
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
まず、このユーザーにデータベース作成(AKA createdb)の権限を付与しながら、Postgresでユーザーを手動で作成する必要があります。
これを行うには、まずPostgresシェルプロンプトを開きます。
$ Sudo -u postgres psql
ユーザーを作成する
postgres=# create role Your_DB_username with createdb login password 'YOUR_PASSWORD';
Postgres Shellを終了します
postgres=# \q
Db関連のrakeタスクを実行します。
$ rake db:create
そしてそれはうまくいきます!
また、インスタンスに接続されているクライアントやアプリケーションなどの開いている接続がないことを確認してください。それが起こった場合、エラーでこれが表示されます
Couldn't create database for {"adapter"=>"xxxx", "database"=>"xxxx", "Host"=>"localhost", "username"=>"postgres", "password"=>"xxxxx", "pool"=>5, "timeout"=>5000}
rake aborted!
ActiveRecord::StatementInvalid: PG::ObjectInUse: ERROR: source database "template1" is being accessed by other users
DETAIL: There is 1 other session using the database.
単純な追加Host: localhost
をdatabase.ymlに
詳細については、 にアクセスしてください。rakedb:create:allがPostgreSQLデータベースへの接続に失敗しました
これを解決するには、database.ymlファイルのデータベース名がappname_development、appname_test、appname_productionの形式であることを確認しました。ここに例として私のdatabase.ymlファイルがあります:
development:
adapter: postgresql
database: parallax_development
username:
password:
test:
adapter: postgresql
database: parallax_test
username:
password:
production:
adapter: postgresql
database: parallax_production
username:
password: