Подтвердить что ты не робот

В Rails не удалось создать базу данных для { "adapter" => "postgresql",

Я пытаюсь запустить 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 insatelled на /usr/local/var/postgres. Не следует ли грабли пытаться просмотреть его в той же папке вместо /var/pgsql_socket/? (У меня нет/usr/local/var/pgsql_socket)

4b9b3361

Ответ 1

Решено!

Решение было простым для обновления текущих установленных драгоценных камней.

Еще одно решение для проверки - установить host: localhost или любой другой хост, который вы используете в настройках разработки в файле database.yml.

Ответ 2

Я установил PG на Mac OS X через Homebrew (я не понимал, что он стал дефолтом в Mac OS X) и имел ту же проблему. Возможно, я поставил проблему хуже, установив pg gem перед установкой pg через Homebrew.

Я решил эту же проблему, выполнив следующие действия:

  • Убедитесь, что все двоичные файлы указывают на двоичные файлы в каталоге Cellar (/usr/local/Cellar в Mac OS X).
  • Удалить pg gem gem uninstall pg
  • Переустановите с помощью конфигураций Homebrew gem install pg -- --with-pg-config=/usr/local/bin/pg_config (если вы создали проект rails с настройкой pg, это объясняется в вашем файле конфигурации database.yml)

И это сработало!

Ответ 3

Я столкнулся с одинаковой проблемой и смог решить эту ошибку:

Ответ 4

Ответ от zquintana выше работал у меня с несколькими небольшими оговорками.

Мое решение (с использованием Homebrew):

  • Если у вас установлен драгоценный камень gem uninstall pg
  • Удалить старую копию postgresql brew uninstall postgresql
  • Повторно установите postgresql brew install postgresql
  • В примечаниях к установке упоминается:

Чтобы начать запуск postgresql при входе в систему:

ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents

Затем загрузить postgresql сейчас:

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

Или, если вам не нужен/нужен запуск, вы можете просто запустить:

postgres -D /usr/local/var/postgres

  1. Итак, запустите ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
  2. Затем launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
  3. Теперь переустановите драгоценный камень с конфигурациями Homebrew gem install pg -- --with-pg-config=/usr/local/bin/pg_config

  4. Теперь запустите rake db:create

Ответ 5

В моем случае это было все, что мне было нужно: https://dba.stackexchange.com/a/75221

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

Ответ 6

Также убедитесь, что у вас нет открытого соединения, такого как клиент или приложение, связанное с экземпляром. Если это произойдет, вы увидите это в ошибке

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.

Ответ 7

Во-первых, вам нужно будет создать своего пользователя вручную в Postgres, предоставив для этого пользователя привилегию создания базы данных (AKA createdb).

Для этого сначала откройте приглашение оболочки Postgres

$ sudo -u postgres psql

Создайте своего пользователя

postgres=# create role Your_DB_username with createdb login password 'YOUR_PASSWORD';

Выход из оболочки Postgres

postgres=# \q

Выполнять любую задачу, связанную с db:

$ rake db:create

И это сработает!

Ответ 8

Мне удалось решить эту проблему, убедившись, что имя моей базы данных в файле 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: