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

После того, как я сделал brew update и brew upgrade, у моего 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 версия: Горный лев.

доморощенная версия: 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

66 ответов

Решение

Была похожая проблема; pid-файл блокировал запуск postgres. Починить это:

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

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

Иногда это может быть проблемой при обновлении postgres.

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

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

OS X / Homebrew:

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

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

Спасибо 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

Если установка и удаление 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

Источник

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

brew postgresql-upgrade-database

На 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.app, вам может понадобиться host: localhost в вашей базе данных. http://postgresapp.com/documentation

brew services start postgres 

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

Проблема также может быть связана с аварийным процессом, который оставил файл postmaster.pid. Я делаю это и работаю:

$ brew services stop postgresql
$ rm /usr/local/var/postgres/postmaster.pid # adjust path accordingly to your install
$ brew services start postgresql

Ни одно из вышеперечисленных решений не помогло мне.

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

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

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

Затем я переинициализировал сервис Postgres

postgres -D /usr/local/var/postgres

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

Самый надежный способ обойти это

brew reinstall postgresql

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

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

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

Если это не так, проверьте ваш postgresql.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

В моем случае проблема была вызвана обновлением Mac OS. Обновление PostgreSQL решило проблему.

# upgrade database version solved the trouble
$ brew postgresql-upgrade-database

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

Для MacOS BigSur, домашние postgres:

  • rm /opt/homebrew/var/postgres/postmaster.pid
  • brew services restart postgresql

Это сработало для меня. Мне не нужно было удалять файлы

brew postgresql-upgrade-database

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

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

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

Бежать

ps aux | grep <PID>

например:

ps aux | grep 12345

тогда делай

kill <PID>

например

kill 12345

Предполагая, что он все еще работает

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

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

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

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

Стоп постгрес

$ 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

Обновлены самоцветы (для рельсов / активной записи):

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

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

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

Я столкнулся с той же проблемой для psql (PostgreSQL) 9.6.11,

что сработало для меня -

удалить postmaster.pid - rm /usr/local/var/postgresql@9.6/postmaster.pid

перезапустите postgres - brew services restart postgresql@9.6

Так что я застрял на этом после rails db:createкоманда. Настройка среды в macOS Catalina 10.15.3.

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

До сих пор я видел единственную ошибку:

$ 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"?

Так что мне нужна была более конкретная информация о том, что происходило. По этой причине я решил посмотреть файл журнала postgres, который находится по адресу

/usr/local/var/log/postgres.log

Итак, после открытия журнала я увидел эту ошибку

LOG: starting PostgreSQL 12.2 on x86_64-apple-darwin19.3.0, compiled by Apple clang version 11.0.0 (clang-1100.0.33.17), 64-bit LOG: could not translate host name "localhost", service "5432" to address: nodename nor servname provided, or not known WARNING: could not create listen socket for "localhost" FATAL: could not create any TCP/IP sockets LOG: database system is shut down

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

Следующее, что я сделал, это проверил файл /etc/hosts, содержимое которого по умолчанию должно выглядеть следующим образом:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost
255.255.255.255 broadcasthost
::1          localhost 

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

#::1             localhost

Поэтому я удалил символ # перед строкой, сохраненной файл, и повторно запустил

rails db:create 

и база данных была успешно запущена.

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

Не нужно делать мягкую ссылку

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

brew link postgres

Решение для MacOS M1 Монтерей

      rm /opt/homebrew/var/postgres/postmaster.pid
brew services restart postgresql

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

$ 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

Если вы выключите свою систему, не выходя из psql, postgres не удалит некоторые файлы.

Я не нашел файл postmaster.pid в каталоге usr / local / var / postgres

Итак, я сделал следующее:

сервисы brew запускают postgresql

Приведенная выше команда должна позволить вам запустить postgres

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

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

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

Эта проблема возникла и в 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.pid

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

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

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

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

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

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

  1. закройте все остальные процессы доступа rails server, rails console, guard, так далее...
  2. загрузка / выгрузка с использованием команд, найденных в brew info postgres
  3. запустить восстановление / удаление / создание ранее

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

Другие вопросы по тегам