Socket File "/var/pgsql_socket/.s.PGSQL.5432" Отсутствует в горном льве (OS X Server)

Я только что обновил свой сервер MacMini от Lion Server до Mountain Lion с помощью OS X Server. У меня такая же проблема с PostgreSQL, что и в прошлом году, когда я впервые установил Lion Server.

Когда я пытаюсь выполнить любую команду терминала PostgreSQL, я получаю следующее печально известное сообщение об ошибке, которое многие получили за эти годы:

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

Я пытался изменить пароль для _postgres, когда получил ошибку. Я попробовал несколько команд, но получил ту же ошибку. Я просто перезагрузил свой сервер, но не повезло. Я зарегистрировался как root, чтобы посмотреть /var/pgsql _socket, и папка пуста. Папка /var/pgsql _socket_alt также пуста.

Я проверил онлайн об этом. Однако практически все прочитанные мной решения, в том числе и в Stack Overflow, предлагают удалить и переустановить PostgreSQL. Я не знаю, но это не похоже на правдоподобный вариант, потому что несколько параметров в приложении Server используют PostgreSQL. Я связался с корпорацией Apple Enterprise Support (без соглашения), и мне сказали, что моя проблема должна быть решена разработчиками, которые будут использовать 695 долларов.

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

Обновление: 12/13/2012 15:33 GMT-6

Вот мой вывод для ps awwwwx | grep postg:

_postgres      28123   0.0  0.1  2479696   7724   ??  Ss    3:01PM   0:00.04 /Applications/Server.app/Contents/ServerRoot/usr/bin/postgres_real -D /Library/Server/PostgreSQL For Server Services/Data -c listen_addresses= -c log_connections=on -c log_directory=/Library/Logs/PostgreSQL -c log_filename=PostgreSQL_Server_Services.log -c log_line_prefix=%t  -c log_lock_waits=on -c log_statement=ddl -c logging_collector=on -c unix_socket_directory=/Library/Server/PostgreSQL For Server Services/Socket -c unix_socket_group=_postgres -c unix_socket_permissions=0770
server1        28216   0.0  0.0  2432768    620 s000  R+    3:02PM   0:00.00 grep postg
_postgres      28138   0.0  0.0  2439388    752   ??  Ss    3:01PM   0:00.01 postgres: stats collector process                           
_postgres      28137   0.0  0.0  2479828   1968   ??  Ss    3:01PM   0:00.00 postgres: autovacuum launcher process                           
_postgres      28136   0.0  0.0  2479696    544   ??  Ss    3:01PM   0:00.00 postgres: wal writer process                           
_postgres      28135   0.0  0.0  2479696    732   ??  Ss    3:01PM   0:00.01 postgres: writer process                           
_postgres      28134   0.0  0.0  2479696    592   ??  Ss    3:01PM   0:00.00 postgres: checkpointer process                           
_postgres      28131   0.0  0.0  2439388    368   ??  Ss    3:01PM   0:00.00 postgres: logger process 

Обновление: 12/13/2012 18:10 GMT-6

После интенсивного поиска в Интернете это видео было найдено. Я смог заставить PostgreSQL работать и удалить ошибку. Я могу подключиться с помощью pgadmin и phppgadmin. Я собирался вернуться на Lion Server из-за явного разочарования. Теперь мне не придется.

http://www.youtube.com/watch?v=y1c7WFMMkZ4

Ответ 1

Мне удалось добавить следующее в мой .bash_profile, чтобы предотвратить ошибку:

export PGHOST=localhost

Это работает потому что:

Если вы опустите имя хоста, psql будет подключаться через сокет Unix-домена к серверу на локальном хосте или через TCP/IP в localhost на компьютерах, у которых нет сокетов Unix-домена.

Ваша ОС поддерживает сокеты домена Unix, но сокет PostgreSQL Unix, который psql нуждается либо не существует, либо находится в другом месте, чем он ожидает.

Указание имени хоста явно как localhost заставляет psql использовать TCP/IP. Установка переменной окружения PGHOST является одним из способов ее достижения. Это описано в руководстве psql.

Ответ 2

Попробуйте вставить в консоли следующее:

$ mkdir /var/pgsql_socket/ 

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

Ответ 3

Я смог решить, просто заполнив 127.0.0.1 для адреса узла PostgreSQL, а не оставив его пустым. (Пример Django)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'database_name',
        'USER': 'database_user',
        'PASSWORD': 'pass',
        'HOST': '127.0.0.1',
        'PORT': '',
        }
}

Ответ 4

Откройте 'postgresql.conf' в вашем любимом редакторе. Ищите переменную 'unix_socket_directories', она, скорее всего, будет выглядеть так:

unix_socket_directories = '/private/tmp/'

Измените строку следующим образом:

unix_socket_directories = '/var/pgsql_socket/'

Обратите внимание, если вы хотите, чтобы файлы сокетов в нескольких каталогах разделяли их.

Ответ 5

Как упоминалось другими в комментариях, очень простым решением этой проблемы является объявление базы данных "хост" в конфигурации базы данных. Добавляя этот ответ, просто сделайте его более понятным для тех, кто читает это.

В приложении Ruby on Rails, например, отредактируйте /config/database.yml:

development:
  adapter: postgresql
  encoding: unicode
  database: database_name
  pool: 5
  host: localhost

Примечание: последняя строка добавлена ​​для указания хоста. До обновления до Yosemite мне никогда не нужно было указывать хост таким образом.

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

Приветствия

Ответ 6

Более простое решение (благодаря http://daniel.fone.net.nz/blog/2014/12/01/fixing-connection-errors-after-upgrading-postgres/). Я обновился до 9.9. В моем случае все, что мне нужно было сделать (после дня поиска в Интернете и без успеха)

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

Перезапустите webrick и сделайте!

Ответ 7

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

service postgresql status

Если база данных не запущена, запустите db:

sudo service postgresql start

Ответ 8

Вы можете проверить свой файл postgresql.conf?

В каком порту запущены ваши postgres?

Я думаю, что он не работает на порту 5432. Если не изменить его на 5432

ИЛИ при использовании терминала

psql -U  postgres -p YOUR_PORT_NUMBER database_name

Ответ 9

У меня была эта проблема с Django.

Исправьте его, явно указав свое имя хоста на "localhost".

Ответ 10

Я делаю слово, делая это:

dpkg-reconfigure locales

и выберите предпочтительные локали

pg_createcluster 9.5 main --start

(9.5 - это моя версия postgresql)

/etc/init.d/postgresql start

а затем это слово!

sudo su - postgres
psql

Ответ 11

Если у вас есть вышеуказанная проблема, но вы обновили ее из Yosemite, тогда нужен другой подход, так как решение для обновления может уничтожить некоторые файлы. Более подробная информация находится на ` pg_tblspc`, отсутствующем после установки последней версии OS X (Yosemite или El Capitan).

Ответ 12

apt-get install postgres-xc-client
apt-get install postgres-xc

Ответ 13

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

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

Установите postgres с помощью brew

brew install postgres

Установить brew услуги

brew tap homebrew/services

Чтобы запустить postgres в качестве фоновой службы

brew services start postgresql

Чтобы остановить postgres вручную

brew services stop postgresql

Мы также можем использовать службы brew для перезапуска Postgres

brew services restart postgresql

Ответ 14

проверьте, работает ли сервер postgres с помощью следующего кода

sudo service postgresql status

если сервер postgres неактивен, напишите следующую команду.

sudo service postgresql start

Ответ 15

Мне потребовалось некоторое время, но я смог получить эту работу, наконец, после того, как вы предложили предлагаемые предложения и проверили дополнительные веб-поиски. Я использовал информацию в следующем видео YouTube, созданном Mactasia:

http://www.youtube.com/watch?v=y1c7WFMMkZ4

Когда я это сделал, я увидел файл с .lock в качестве расширения. Однако я все еще получил ошибку, когда попытался запустить Rails-сервер, когда я возобновил работу над своим Rails-приложением, используя PostgreSQL. На этот раз я получил отказ в разрешении. Это когда я вспомнил, что не только мне пришлось менять listen_addresses в plist, но мне также пришлось менять unit_socket_permissions на 0777. Я также вошел в систему под именем root, чтобы изменить разрешения в папке var/pgsql_socket, где я мог бы получить к нему доступ пользовательский уровень. Теперь Postgres отлично работает. Я нахожусь в процессе перезагрузки моих данных из моей резервной копии SQL.

То, что я не понимал, было то, что когда у меня была wiki, включенная PostgreSQL, предположительно работала, когда я делал postgres fullstatus sudo serveradmin, но у меня все еще была ошибка. О, хорошо.

Ответ 16

Разрешения для файлов ограничены в базе данных Postgres, принадлежащей Mac OS. Эти разрешения являются reset после перезагрузки или перезапуска Postgres: например. serveradmin запускает postgres.

Итак, временно reset разрешения или права собственности:

sudo chmod o+rwx /var/pgsql_socket/.s.PGSQL.5432
sudo chown "webUser"  /var/pgsql_socket/.s.PGSQL.5432

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

Ответ 17

Сначала удалите установленные postgres:

sudo apt-get purge postgr*
sudo apt-get autoremove

Затем установите 'synaptic':

sudo apt-get install synaptic
sudo apt-get update

Затем установите Postgres

sudo apt-get install postgresql postgresql-contrib

Ответ 18

Я только что создал новый кластер и работал у меня, я использовал (PostgreSQL) 9.3.20:

sudo pg_createcluster 9.3 main --start

Ответ 19

Я получил эту ошибку после того, как мой компьютер завис и перезагрузился самостоятельно. Решение для меня не было найдено на этой странице, скорее, на другом вопросе с очень высокой оценкой SO с той же ошибкой psql: не удалось подключиться к серверу: нет такого файла или каталога (Mac OS X). Ответ: просто удалите этот файл /usr/local/var/postgres/postmaster.pid, затем brew services restart postgresql сделал brew services restart postgresql дело. Обратите внимание на предупреждение в ответе об уничтожении процессов postgres, прежде чем делать это, иначе вы можете навсегда испортить свою базу данных.