Ошибка PostgreSQL 'Не удалось подключиться к серверу: нет такого файла или каталога'

Как и некоторые другие, я получаю эту ошибку, когда запускаю rake db: переношу в свой проект или даже пытаюсь выполнить большинство задач базы данных для Ruby on Rails 3.2 приложения.

PGError (не удалось подключиться к серверу: нет такого файла или каталога. сервер, работающий локально, и прием соединений в сокетном домене Unix "/tmp/.s.PGSQL.5432"?

Я установил PostgreSQL с Homebrew давным-давно и после попытки установки MongoDB моя установка PostgreSQL никогда не была такой же. Я запускаю OS X v10.6 Snow Leopard.

Что не так и как лучше понять, как PostgreSQL и должен быть настроен на моем Mac?

До сих пор (я думаю) это говорит мне, что PostgreSQL не работает (?).

ps -aef|grep postgres                                                                                                   ([email protected]) (develop) ✗
  501 17604 11329   0   0:00.00 ttys001    0:00.00 grep postgres

Но это говорит мне, что PostgreSQL работает?

✪ launchctl load -w /usr/local/Cellar/postgresql/9.1.4/homebrew.mxcl.postgresql.plist                                                        (ruby-1.9.2-p136) 
homebrew.mxcl.postgresql: Already loaded

Как это исправить? что я не вижу?

PS: ~/Library/LaunchAgents содержит два файла .plist PostgreSQL. Я не уверен, что это важно.

org.postgresql.postgres.plist
homebrew.mxcl.postgresql.plist

Я попробовал следующее и получил результат, как показано ниже.

$psql -p 5432 -h localhost

psql: could not connect to server: Connection refused
    Is the server running on host "localhost" (127.0.0.1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on host "localhost" (::1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on host "localhost" (fe80::1) and accepting
    TCP/IP connections on port 5432?

Я читал, так как это происходит потому, что OS X устанавливает собственную версию PostgreSQL, а Homebrew устанавливает другую версию в другом месте, а команды PostgreSQL ищут в каталоге /tmp/. Вам нужно будет искать больше в Stack Overflow, но в основном вы symlink PostgreSQL, так что все, что ищет в этом пути tmp, действительно находит реальный путь, если это имеет смысл.

Это ссылка, в которой я нашел еще несколько вещей, чтобы попробовать, в частности, делать символическую ссылку в соответствии с выше, Mac OSX Lion Postgres не принимает подключения на /tmp/.s. PGSQL.5432. Я все еще хочу, чтобы кто-то собрал достойное объяснение концепций установки PostgreSQL на OS X и почему все это так сложно.

Последние сведения, помогающие устранить неполадки:

$ which psql // This tells you which PostgreSQL you are using when you run $ psql. 

Затем запустите:

$ echo $PATH

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

Убедитесь, что запись пути для копии PostgreSQL, которую вы хотите запустить COMES, до пути к OS X-системе PostgreSQL.

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

Ответы

Ответ 1

Проверьте, нет ли postmaster.pid в вашем каталоге postgres, возможно /usr/local/var/postgres/

удалите это и запустите сервер.

Check - https://github.com/mperham/lunchy - отличная оболочка для launchctll.

Ответ 2

ОБНОВЛЕНИЕ: ЗДЕСЬ ЛУЧШЕ ФИКСИРОВАТЬ, ЕСЛИ ВЫ НА OSX...

http://postgresapp.com/


Старый ответ:

Вот исправление, больше информации здесь:

https://github.com/mxcl/homebrew/issues/5004

Сначала остановите db, затем

  • cd/var
  • rm -r pgsql_socket
  • ln -s/tmp pgsql_socket
  • chown _postgres: _postgres pgsql_socket
  • перезапустить postgres (не ваш компьютер)

Ответ 3

Для меня это работает

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

Ответ 4

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

1) возможно изменить свой порт по умолчанию, не указанный в файле postgres.conf, если вы упомянули другой, то по умолчанию порт 5432 при установке.

(ИЛИ)

2) Измените порт no в файле postgresql.conf и перезапустите сервер БД

(ИЛИ)

3) вместо полной команды psql типа

"psql -p 5432 -h localhost"

  • имя сервера и порт

Ответ 5

Если вы используете Homebrew, удалите Postgresql end pg gems: *

$ gem uninstall pg
$ brew uninstall postgresql

Загрузите и запустите следующий script, чтобы установить разрешение на /usr/local: * https://gist.github.com/rpavlik/768518

$ ruby fix_homebrew.rb

Затем установите Postgres снова и pg gem: *

$ brew install postgresql  
$ initdb /usr/local/var/postgres -E utf8

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

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

Или запустите вручную.

Установить pg gem

$ gem install pg

Я надеюсь, что помог

Ответ 6

У меня была эта проблема, когда я обновил Postgres до 9.3.x. Быстрое исправление для меня состояло в том, чтобы перейти к той версии 9.2.x, с которой я раньше (нет необходимости устанавливать новую).

$ ls /usr/local/Cellar/postgresql/
9.2.4
9.3.2
$ brew switch postgresql 9.2.4
$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
<open a new Terminal tab or window to reload>
$ psql

Этот ответ предлагает гораздо более полное объяснение, а также альтернативные способы устранения проблемы.

Ответ 7

Итак, для многих проблем здесь кажется, что люди уже запускали psql и должны были удалить postmaster.pid. Тем не менее, у меня не было этой проблемы, так как у меня даже не было установленных postgres в моей системе.

Здесь решение, которое работало для меня в MAC OSX Yosemite

  • Я пошел в http://postgresapp.com/ и загрузил приложение.
  • Я переместил приложение в папку Application/
  • Я добавил его в $PATH, добавив его в .bashrc или .bash_profile или .zshrc: export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin
  • Я запускал postgres из каталога Applications и снова запускал команду, и она работала.

Надеюсь, это поможет! Toodles!

Кроме того, этот ответ помог мне больше всего: fooobar.com/questions/12877/...

Ответ 8

При запуске: psql -p 5432 -h localhost он не использует драйвер loopback, но использует настоящий сокет, и поэтому вам нужно настроить postgres для приема соединений сокетов. Следовательно, хотя pgadmin и другие клиенты могут работать, psql не будет.

Вам нужно изменить файл postgresql.conf и файлы pg_hba.conf, чтобы разрешить соединение через настоящий сокет. Это также позволит подключиться к удаленному ip, поэтому по умолчанию он отключен.

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

ps -ef | grep postmaster

Эти два файла - это каталог -D (возможно,/usr/local/pgsql/data).

Для файла postgresql.conf раскомментируйте файл listen_address и измените его как:

listen_address = '*'

Для pg_hba.conf добавьте строку:

host all all 0.0.0.0/0 md5

Ответ 9

Я не знаю Mac или Homebrew, но я хорошо знаю PostgreSQL.

Вы хотите выяснить, откуда идут журналы из PostgreSQL, и что каталог сокетов для PostgreSQL. По умолчанию при создании PG каталог сокетов -/tmp/. Если вы не изменили это, когда вы создали PG, а затем вы начали PG, вы должны увидеть файл сокета в /tmp, если вы это сделаете: ls -al/tmp

Файл сокета начинается с ".", поэтому вы не увидите его с помощью "-a" на ls.

Если вы не видите там сокет, и вы ничего не видите от ps awux | grep postgres, то PG, вероятно, не работает, или, может быть, и есть OSX-установленный. Что может случиться, так это то, что вы можете столкнуться с конфликтом при прослушивании на порту 5432 на localhost-use netstat -anp, чтобы узнать, что, если угодно, прослушивает 5432. Если Mac OSX PG уже прослушивает этот порт, это может быть проблемой.

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

Ответ 10

Причина

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

Решение

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

Через

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

Ответ 11

Привет, мир:)
Лучшим, но странным для меня способом было сделать следующее.

1) Загрузите postgres93.app или другую версию. Добавьте это приложение в папку /Applications/.

2) Добавьте строку (команду) в файл .bash_profile (который находится в моем домашнем каталоге):

export PATH=/Applications/Postgres93.app/Contents/MacOS/bin/:$PATH
Это значение PATH для psql из Postgres93.app. Строка (команда) запускается каждый раз при запуске консоли.

3) Запустите папку Postgres93.app из /Applications/. Он запускает локальный сервер (порт "5432", а хост - "localhost" ).

4) После всех этих манипуляций я был рад запустить $ createuser -SRDP user_name и другие команды и убедиться, что он сработает! Postgres93.app можно запускать при каждом запуске системы.

5) Также, если вы хотите графически увидеть свои базы данных, вы должны установить PG Commander.app. Это хороший способ увидеть вашу базу данных postgres как симпатичные таблицы данных.

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

Ответ 12

У меня был PostgreSQL 9.3 и получил ту же ошибку,

Не удалось подключиться к серверу: соединение отклонено. Сервер работает. на хосте "localhost" (127.0.0.1) и принимать соединения TCP/IP на порт 5432?

Я исправил это, используя:

chmod 777  /var/lib/pgsql/9.3/data/pg_hba.conf 
service postgresql-9.3 restart

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

Ответ 13

для чего это стоит, я испытал ту же ошибку, когда у меня была опечатка (md4 вместо md5) в моем pg_hba.conf файле (/etc/postgresql/9.5/main/pg_hba.conf)

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

Ответ 14

Я исправил это, обновив postgres.

brew update
brew upgrade

Затем мне также пришлось обновить базы данных, чтобы они были совместимы с новой основной версией, потому что я обновил с 10 до 11.

brew postgresql-upgrade-database

(источник https://github.com/facebook/react-native/issues/18760#issuecomment-410533581)

Ответ 15

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

$psql -h localhost 

чтобы перезагрузить сервер.

Ответ 16

При запуске PostgreSQL могут возникать различные проблемы. Я бы рекомендовал очистить все версии postgres и начать новый. После того, как вы его установили, очень легко воссоздать свою базу данных, если у вас есть проект рельсов с обновленным db/schema.rb

Вот как обычно установить PostgreSQL на Mac. Если вы используете локальную базу данных под локальным пользователем root, вы можете опустить последний шаг, создающий пользователя todo

Ответ 17

Одна из причин может заключаться в том, что

unix_socket_directories в файле postgresql.conf не указан в каталоге, который он ищет.

В примере вопроса он ищет каталог /tmp, который должен быть указан в файле postgresql.conf.

что-то вроде этого:

unix_socket_directories = '/var/run/postgresql,/tmp'    # comma-separated list of directories

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

Ответ 18

Если вы находитесь на MacOS и используете доморощенный, я нашел этот ответ чрезвычайно полезным:

fooobar.com/questions/12671/...

Для меня мой сервер работал, но из-за обновления у меня возникли проблемы с подключением (обратите внимание: я пользуюсь услугами brew). Если Postgres запущен, попробуйте cat /usr/local/var/postgres/server.log и посмотрите, что говорят журналы. Моя ошибка была миграцией, а не проблемой подключения.

Также после ручной миграции, которую они предлагают (что работает, но), я обнаружил, что для моего пользователя больше нет таблицы. Попробуйте эту команду, чтобы исправить это: createdb (ответил через psql: FATAL: database "<user> " не существует)

Ответ 19

Это очень просто. Добавляйте хост в свой файл database.yaml.