Postgres не удалось подключиться к серверу

после того, как я сделал обновление brew и обновление brew, мои postgres получили некоторые проблемы. Я попытался удалить postgres и установить снова,но это не сработало.

это сообщение об ошибке.(Я также получил это сообщение об ошибке, когда я пытаюсь сделать rake db: migrate)

$ psql
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

как я могу решить это?

версия для Mac: Mountain lion.

домашняя версия: 0.9.3

версия postgres: psql (PostgreSQL) 9.2.1

и это что я сделал.

12:30 ~/D/works$ brew uninstall postgresql
Uninstalling /usr/local/Cellar/postgresql/9.2.1...
12:31 ~/D/works$ brew uninstall postgresql
Uninstalling /usr/local/Cellar/postgresql/9.1.4...
12:31 ~/D/works$ psql --version
bash: /usr/local/bin/psql: No such file or directory
12:33 ~/D/works$ brew install postgresql
==> Downloading http://ftp.postgresql.org/pub/source/v9.2.1/postgresql-9.2.1.tar.bz2
Already downloaded: /Library/Caches/Homebrew/postgresql-9.2.1.tar.bz2
......
......
==> Summary
/usr/local/Cellar/postgresql/9.2.1: 2814 files, 38M, built in 2.7 minutes
12:37 ~/D/works$ initdb /usr/local/var/postgres -E utf8
The files belonging to this database system will be owned by user "laigary".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.UTF-8".
The default text search configuration will be set to "english".

initdb: directory "/usr/local/var/postgres" exists but is not empty
If you want to create a new database system, either remove or empty
the directory "/usr/local/var/postgres" or run initdb
with an argument other than "/usr/local/var/postgres".
12:39 ~/D/works$ mkdir -p ~/Library/LaunchAgents
12:39 ~/D/works$   cp /usr/local/Cellar/postgresql/9.2.1/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/
12:39 ~/D/works$   launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
homebrew.mxcl.postgresql: Already loaded
12:39 ~/D/works$ pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
server starting
12:39 ~/D/works$ env ARCHFLAGS="-arch x86_64" gem install pg
Building native extensions.  This could take a while...
Successfully installed pg-0.14.1
1 gem installed
12:42 ~/D/works$ psql --version
psql (PostgreSQL) 9.2.1
12:42 ~/D/works$ psql
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

теперь, после того,как я переустановил howbrew, когда я использую $ psql, Он не показывает сообщение об ошибке.

но я бегу rake db:migrate в моем приложении rails он показывает:

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"?
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213:in `initialize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213:in `new'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213:in `connect'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:329:in `initialize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `new'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `postgresql_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:309:in `new_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:319:in `checkout_new_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:241:in `block (2 levels) in checkout'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:236:in `loop'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:236:in `block in checkout'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:233:in `checkout'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:96:in `block in connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:95:in `connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:404:in `retrieve_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:170:in `retrieve_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:144:in `connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:107:in `rescue in create_database'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:51:in `create_database'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:40:in `block (3 levels) in <top (required)>'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:40:in `each'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:40:in `block (2 levels) in <top (required)>'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:205:in `call'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:205:in `block in execute'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:200:in `each'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:200:in `execute'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:158:in `block in invoke_with_call_chain'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:151:in `invoke_with_call_chain'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:144:in `invoke'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:116:in `invoke_task'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:94:in `block (2 levels) in top_level'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:94:in `each'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:94:in `block in top_level'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:88:in `top_level'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:66:in `block in run'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:63:in `run'
/usr/local/bin/rake:32:in `<main>'
Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "database"=>"riy_development", "pool"=>5, "username"=>nil, "password"=>nil}

наконец-то я нашел решение.

$ sudo mkdir /var/pgsql_socket/
$ sudo ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/

это решение немного сложно, но это работает. Надеюсь, у кого-нибудь есть лучшее решение

обновление

это работает для меня.

rm /usr/local/var/postgres/postmaster.pid

30 ответов


была аналогичная проблема; PID-файл блокировал запуск postgres. Чтобы исправить это:

rm /usr/local/var/postgres/postmaster.pid

и тогда все хорошо.


иногда это может быть проблема с обновлением данных.

В моем случае, это произошло при обновлении 9.3 для 9.4.

см.http://www.postgresql.org/docs/9.4/static/upgrading.html

OS X / Homebrew:

попробуй postgres -D /usr/local/var/postgres -- Это даст вам гораздо более подробный вывод, если сервер не запускается.

В моем случае, работает rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8 удалил мои старые базы данных, а затем повторно инициализировал схему БД postgres.

спасибо https://github.com/Homebrew/homebrew/issues/35240 для этого решения.

после регенерации моих баз данных (с rake db:create) все снова работало нормально.


нашел решение, которое сработало для меня здесь:

https://dba.stackexchange.com/questions/75214/psql-could-not-connect-to-server-no-such-file-or-directory

вы фактически выполните следующую команду, чтобы вручную запустить сервер:

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

на Yosemite, если PID-файл блокирует запуск Postgres, и у вас есть launchctl демон пытается (и не удается) загрузить демонов базы данных, затем вам нужно будет выгрузить файл plist:

$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

затем удалить PID-файл

$ rm /usr/local/var/postgres/postmaster.pid

перезагрузите launchctl демон

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

для тех, кто читает это и использует Postgres.приложение, вам может понадобиться host: localhost в вашей базе данных.в формате YML. http://postgresapp.com/documentation#toc_3


если установка и удаление postgres с brew не работает для вас, посмотрите журналы вашей установки postgresql или:

postgres -D /usr/local/var/postgres

если вы видите такой выход:

LOG:  skipping missing configuration file "/usr/local/var/postgres/postgresql.auto.conf"
FATAL:  database files are incompatible with server
DETAIL:  The data directory was initialized by PostgreSQL version 9.4, which is not compatible with this version 9.6.1.

затем попробуйте следующее:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

запустите сервер:

pg_ctl -D /usr/local/var/postgres -l logfile start

источник


убедитесь, что файл сокета существует.

$ ls -l /tmp/.s.PGSQL.5432
srwxrwxrwx  1 you  wheel  0 Nov 16 09:22 /tmp/.s.PGSQL.5432

Если это не так, проверьте ваши программы.conf для изменения unix_socket_directory.

$ grep unix_socket /usr/local/var/postgres/postgresql.conf
#unix_socket_directory = ''     # (change requires restart)
#unix_socket_group = ''         # (change requires restart)
#unix_socket_permissions = 0777     # begin with 0 to use octal notation

brew services start postgres 

работал на меня!


обновление базы данных работает для меня

brew postgresql-upgrade-database


Это произошло со мной, когда я обновился с 9.3.4 до 9.5, поскольку базы данных несовместимы без обновления.

я использовал pg_upgrade следующим образом:

остановить postgres

$ brew services stop postgresql

обновление баз данных:

$ pg_upgrade \
   -d /usr/local/var/postgres \
   -D /usr/local/var/postgres9.5 \
   -b /usr/local/Cellar/postgresql/9.3.4/bin/ \
   -B /usr/local/Cellar/postgresql/9.5.0/bin/ \
   -v

архивировать старые базы данных:

 $ mv /usr/local/var/postgres /usr/local/var/postgres9.3.save
 $ mv /usr/local/var/postgres9.5 /usr/local/var/postgres

перезапустить postgres:

 $ brew services start postgresql

обновленные драгоценные камни (для rails / active record):

 $ gem uninstall pg
 $ gem uninstall activerecord-postgresql-adapter
 $ bundle install

это на самом деле то, что вы должны сделать:

вместо этого вы должны посмотреть на /usr/local/var/postgres/postmaster.пид

а затем посмотрите на первую строку файла-это плохой PID

Run

ps aux | grep <PID>

например:

ps aux | grep 12345

затем сделать

kill <PID>
kill 12345

предполагая, что это все еще бег!--5-->

https://superuser.com/questions/553045/fatal-lock-file-postmaster-pid-already-exists

не слушайте принятый ответ, это плохо и повредит ваши данные!!!


изменение postresql или базы данных.настройки конфигурации yml, изменение $PATH или создание символических ссылок были для меня ненужными. Все, что мне нужно было gem uninstall pg а то bundle (или gem install pg).

проблема заключалась в том, что PG gem был установлен до homebrew postgres, поэтому собирал настройки из версии postgres, которая поставляется с MacOS. Переустановка его (и, таким образом, восстановление собственного расширения) исправила проблему.


опция Psql

-H имя_хоста -- host=имя хоста

: указывает имя хоста компьютера, на котором работает сервер. если значение начинается с косой черты, он используется в качестве каталога для Unix-сокета.

$ grep "port\|unix_socket" /etc/postgresql/9.1/main/postgresql.conf
port = 5433                                         # (change requires restart)
unix_socket_directory = '/var/run/postgresql'       # (change requires resta

$ netstat -nalp | grep postgres
unix  2      [ ACC ]     STREAM     LISTENING     106753   4349/postgres       /tmp/.s.PGSQL.5432
unix  2      [ ACC ]     STREAM     LISTENING     10377 1031/postgres       /var/run/postgresql/.s.PGSQL.5433

запустите psql с опцией-host

$ psql -p 5433 -h /var/run/postgresql

нет необходимости делать мягкую ссылку


FWIW это случилось со мной сегодня, но случилось то, что я запускал обновления Ubuntu в то время, которые, вероятно, обновляли Postgres. После завершения обновления я смог подключиться без заминки.

для полноты, я пытался получить записи из базы данных из консоли Rails:

development (main):0 > a = MyModel.find 73694
PG::ConnectionBad: 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"?

Это потому, что предыдущий сервер все еще работает, попробуйте закрыть все и повторно запустить приложение.


самый дурацкий способ доказательства - это сделать

brew reinstall postgresql

это сохранит ваше разрешение пользователя и т. д. Все нетронутым, и все будет сброшено на новое. Работает все время !


Если postgres был установлен с помощью homebrew, вы можете исправить это, запустив:

brew link postgres

это сработало для меня (как смесь предыдущих ответов):

$ rm /usr/local/var/postgres/postmaster.pid

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

источник: https://coderwall.com/p/zf-fww/postgres-on-osx-with-homebrew-not-running-after-osx-crash


я столкнулся с этой проблемой после попытки восстановить/удалить/создать БД, пока другие процессы обращались к ним. MacOSX / Homebrew исправить было:

  1. закрыть все другие процессы доступа rails server, rails console, guard, etc...
  2. загрузка / выгрузка с помощью команд, найденных в brew info postgres
  3. запустите restore / drop / create from before

Я получил ту же ошибку. Оказывается, postgres просто не работал вообще (обычно он всегда работает в фоновом режиме, но по какой-то причине это не было сегодня).

Если это так, просто типа postgres в командной строке каталога проекта


после огромного количества назад и вперед, это действительно дошло до pg версия gem, которую я использовал. На Маверикс,pg версия 0.15.1 не будет подключаться к порту 5432, но версия 0.17.1 работает просто отлично - очень странно.


похоже, что ваш psql не работает. Вы должны запустить его перед подключением. Вы можете сделать это с помощью Postgres.приложение только для Mac OS. (Скачать и установить это приложениеhttp://postgresapp.com) Откройте приложение, и у вас есть сервер PostgreSQL, готовый и ожидающий новых подключений. Закройте приложение, и сервер выключится. Вы также можете найти эту информацию здесь http://www.postgresql.org/download/macosx/. Надеюсь, это поможет вам.


для меня это было обновление apache, которое вызвало проблему. Я все еще могу запустить psql в консоли или вызвать db непосредственно из kdevelop. Также он работал, чтобы добавить" host=localhost " в строку подключения.

но реальная проблема заключалась в том, что apache изменился на private tmp.

устранение: обновления /usr/lib в/systemd в/системы/apache2 не.обслуживание и изменение PrivateTmp=true для PrivateTmp=false.

Я работаю над openSUSE OS, но я думаю, что что-то подобное может случиться на Mac.


столкнулся с этой проблемой тоже на macOS Sierra, и когда мы запустили pg_ctl, как описано выше, у нас была следующая ошибка pg_ctl: no database directory specified and environment variable PGDATA unset. Итак, мы пошли по следам здесь который решил наш вопрос, а именно:

mkdir ~/.postgres

initdb ~/.postgres

pg_ctl -D ~/.postgres start


для тех, кто использует эту команду и не работает или файл не существует и использует Ruby on Rails

rm/usr/local/var/postgres / postmaster.пид

или любая другая команда и просто продолжать терпеть неудачу.

Я решил эту проблему удалив с самогоном. Мне пришлось удалить с brew 2 раза, потому что при первом удалении останется еще одна версия postgresql, при втором удалении процесс будет завершенный.

установите postgresql с Brew

затем отбросьте, создайте и перенесите базы данных проекта

(Не забудьте запустить сервер postgresql)


у меня такая же проблема, потому что я использую неправильное имя пользователя Postgres в коде. Я зашел на сервер psql -d postgres и вводим \du чтобы взять имя роли и исправить имя пользователя Postgres.

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

надеюсь, это поможет кто-нибудь


¿вы недавно изменили pg_hba.конф? если вы просто проверили любую опечатку в:

"local" предназначен только для подключений сокетов домена Unix

local все все пароль

локальные соединения IPv4:

хост все все 127.0.0.1 / 32 пароль

локальные соединения IPv6:

хост все все :: 1/128 пароль

Иногда простая ошибка может дать нам головной боли. Надеюсь, это поможет и извините, если мой английский совсем не хорош.


это происходит, когда сервер postgres не работает. Шаги по правильной установке Postgres via Homebrew на MAC:

  1. brew install postgres

  2. initdb /Users/<username>/db -E utf8 [Это инициализирует postgres для использования данного каталога в качестве каталога базы данных. Обычно не рекомендуется использовать пользовательский каталог для хранения баз данных. Отредактируйте файл sudoers, чтобы добавить initdb и аналогичные команды, а затем запустите initdb на / usr / local/var / postgres]

  3. pg_ctl -D /Users/<username>/db -l logfile start [После получения успеха с шагом 2 он предложит запустить Шаг 3. Эта команда запускает сервер.]


ни одно из вышеперечисленных решений не сработало для меня.

проблема заключается в том, что на порту 5432 уже работает служба, и мы не можем установить соединение сокета psql через этот порт.

Я удалил файл сокета

rm -rf /tmp/.s.PGSQL.5432/

затем я повторно инициализировал postgres services

postgres -D /usr/local/var/postgres

это работает для меня.


Причиной

Lion поставляется с уже установленной версией postgres и по умолчанию использует эти двоичные файлы. В общем, вы можете обойти это, используя полный путь к двоичным файлам homebrew postgres, но могут возникнуть проблемы с другими программами.

Решение

curl http://nextmarvel.net/blog/downloads/fixBrewLionPostgres.sh | sh

Via

http://nextmarvel.net/blog/2011/09/brew-install-postgresql-on-os-x-lion/