Адаптер Postgresql (pg): не удалось подключиться к серверу
Я получаю эту ошибку при каждом запуске приложения Rails (оно не может подключиться к моему локальному Postgresql)
/Users/leonardo/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-3.2.11/lib/
active_record/connection_adapters/postgresql_adapter.rb:1208:in `initialize':
could not connect to server: No such file or directory (PG::Error)
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?
Я использую Postgres.app, что он работает правильно.
Если я бегу
$ psql
Я могу правильно войти в консоль Postgresql.
$ which psql
/Applications/Postgres.app/Contents/MacOS/bin/psql
Gemfile
source 'https://rubygems.org'
ruby "1.9.3"
gem 'rails', '3.2.11'
gem "pg"
database.yml
development:
adapter: postgresql
encoding: unicode
username: leonardo
password:
database: zapping
port: 5432
Postgresql (Консоль)
$ psql
leonardo=# \l
16 ответов
Попробуйте добавить host: localhost
в вашу базу данных. (На основании: /questions/27192350/razreshenie-postgres-otkazano-v-mac-os-x/27192380#27192380)
Ваш Pg
gem был скомпилирован с PostgreSQL libpq, предустановленным в Mac OS X, и вы используете psql
что вы установили в более новой версии, или наоборот.
Это можно обойти, указав соединение TCP/IP, добавив localhost
в database.yml
, но лучше скомпилировать Pg
драгоценный камень против libpq
для сервера на самом деле вы работаете. Для этого вы должны иметь возможность установить PATH
переменная окружения в папку с правильной pg_config
в нем перед компиляцией. В вашем случае это будет где-то внутри Postgres.app
,
Если это не работает даже после добавления host: localhost
, удалить postmaster.pid
rm /usr/local/var/postgres/postmaster.pid
Ты должен добавить host: localhost
к вашей конфигурации БД...
У меня была эта проблема. Один из комментариев здесь помог мне решить проблему.
Спасибо, этот ответ помог мне исправить это. Шаги, которые я предпринял, были просты: 1) gem uninstall pg, 2) установка пакета, готово. - Haslo 3 декабря '13 в 20:27
gem uninstall pg
bundle install
Поскольку это было первое сообщение, появившееся в результатах поиска, я решил опубликовать обновленное исправление для этого. Поскольку ни одно из вышеперечисленных предложений не сработало для меня.
brew postgresql-upgrade-database
Это обновление данных postgresql и перенес мою старую версию. Я был на 9,6 вместо 10,4
Нашел решение здесь
У меня была такая же проблема. Вы должны запустить / запустить postgres. Должно быть, Postgres недавно перестал работать на моем компьютере, поэтому я должен был убедиться, что он работает, запустив сервер Postgres.
postgres -D /usr/local/var/postgres
Затем сработали следующие команды (которые вызывали у меня ту же ошибку, что и у вас):
bundle exec rake db:create db:migrate
bundle exec rspec
У меня была такая же проблема на Mac. Оказывается, что psql, который я имел на своем пути, не работал правильно. Попробуйте запустить psql, набрав:
~/projects/some_project/project-rails$ psql
psql: 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"?
Если вы видите это, это означает, что двоичный файл psql на вашем пути пытается подключиться через сокет и не может это сделать (по какой-либо причине). Так как я уже скачал pgadmin и он подключался нормально, я знал, что это не проблема с сервером.
Исправлено, добавив правильную версию pgsql в мой PATH:
export PATH=/Applications/Postgres.app/Contents/MacOS/bin:$PATH
Теперь psql (и рельсы) счастливы!
find / -name 'postgresql.conf'
netstat -an | grep 5432 # => /tmp/.s.PGSQL.5432
vi / Пользователи / Администратор / Библиотека / Приложение \ Поддержка /Postgres93/var/postgresql.conf
ОТ: unix_socket_directories = '/ tmp'
TO: unix_socket_directories = '/ var / pgsql_socket'
sudo mkdir / var / pgsql_socket
sudo chmod 777 / var / pgsql_socket
Для героку это все что тебе нужно.
heroku addons:create heroku-postgresql
production:
adapter: postgresql
encoding: unicode
host: localhost
# For details on connection pooling, see rails configuration guide
# http://guides.rubyonrails.org/configuring.html#database-pooling
pool: 5
У меня просто была проблема, что приложение postgres не работало на моем Mac...
Моя проблема заключалась в том, что /etc/hosts
файл изменен и не имеет этой важной записи: 127.0.0.1 localhost
У меня была такая же проблема в ОС High sierra 10.13. Я следовал инструкциям с этого сайта. Я скачал версию 10.4 ref: https://postgresapp.com/
Затем я добавил это в профиль bash: export PATH=$PATH:/Library/PostgreSQL/10.4/bin:$PATH
перезапустить терминал.
Откройте новое окно терминала и введите: psql -U postgres
после этого вы увидите это сообщение: psql (10.4) Введите "help" для справки.
Postgres=#
На Mac у меня были разные версии postgresql. Эта проблема была решена, когда я пытался brew switch postgresql 9.5.5
(Я не думаю, что номер версии имеет значение в данный момент)
$ brew switch postgresql 9.5.5
Cleaning /usr/local/Cellar/postgresql/9.6.1
Cleaning /usr/local/Cellar/postgresql/9.6.5
Cleaning /usr/local/Cellar/postgresql/10.2
Cleaning /usr/local/Cellar/postgresql/10.3
Cleaning /usr/local/Cellar/postgresql/9.5.5
Cleaning /usr/local/Cellar/postgresql/9.5.4
Кстати, все данные исчезнут. Я думаю, что есть команда brew для этого без переключения версии, которую я не смог найти.
У меня была аналогичная проблема - когда я запускал
psql
в терминале у меня все еще была та же ошибка, так что это говорило мне, что это не проблема с жемчужиной pg, и я должен проверить саму настройку postgres. Поэтому я проверил журналы postgres - в моем случае они находились в
/usr/local/var/log/postgres.log
и я увидел следующую ошибку:
dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.66.dylib
Referenced from: /usr/local/opt/postgresql/bin/postgres
Итак, знание точной ошибки помогло мне решить проблему, в моем случае на основе этого ответа я запустил
brew switch icu4c 66.1
который решил проблему после перезапуска postgres:
brew services restart postgresql
У меня возникла проблема с подключением, если я установил имя хоста наlocalhost
или127.0.0.1
. Клиентская библиотека PostgreSQL, похоже, рассматривает это как особые случаи, ища сокет UNIX вместо порта TCP.
Мне удалось решить свою проблему, установив имя хоста наlocalhost.
. Замыкающий период не позволяет ему попасть в особый случай и помогает мне.