Прежде всего извиняюсь, если «файл порта не является правильной терминологией», но Postgres не является одним из моих сильных сторон. Я пытаюсь выяснить, что должен выглядеть этот файл порта, поскольку он, кажется, пропал из моей системы. Пожалуйста, прочитайте объяснение и мой (возможно, неправильный) след мысли.Каким должен быть файл порта Postgres?
Я использую Postgres с проектом рельсов (через камень postgres), и он работал нормально до вчерашнего дня, когда он прекратил работать, пока я обновлял некоторый HTML. Я перезагрузил свой сервер рельсы с обычным
рельсов S
только получить:
/Users/pedr/.rvm/gems/ruby-1.9.3-p0/ gems/activerecord-3.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb: 1161: in `initialize ': не удалось подключиться к серверу: нет такого файла или каталога (PG :: Ошибка) \ n \ n
Работает ли сервер а также принимать соединения в доменной зоне Unix "/tmp/.s.PGSQL.5432"?
Я использую Lunchy для запуска и остановки postgres, и там, похоже, нет проблем.
Однако я использовал следующую команду Terminal, чтобы проверить, какой порт Postgres прослушивает:
sudo lsof -p 286| awk '$5 == "unix" && $NF ~ /\// { print $NF }'
и он ничего не перечисляют. Поэтому я думаю, что порт был каким-то образом удален.
Мое ограниченное понимание портов заставляет меня выглядеть в следующем месте для файла порта:
/tmp/.s.PGSQL.5432
Существует файл с именем:
.s.PGSQL.5432.lock
Насколько я понимаю, этот файл предотвращает редактирование файла порта, который отсутствует.
Я попытался использовать машину времени, чтобы найти этот недостающий файл, но кажется, что Time Machine ничего не хранит в каталоге/tmp.
Итак, как я могу воссоздать этот файл? Как это будет выглядеть?
[UPDATE]
В ответ на @ wildplasser-х предложений:
Теста ли Postgres выполняется с помощью:
пс Окс | GREP Postgres
получает меня:
633 0,0 0,0 2442564 392 ?? Ss 9:23 am 0: 00.09 postgres: статистика коллектора процесс 632 0.0 0.0 2446480 1516 ?? Ss 9:23 am 0: 00.09 postgres: autovacuum launcher process 631 0.0 0.0 2446348 520 ?? Ss 9:23 am 0: 00.32 postgres: wal writer process 630 0.0 0.0 2446348 580 ?? Ss 9:23 am 0: 00.48 postgres: процесс записи 520 0,0 0,1 2446348 3640 ?? S 9:22 am 0: 00.33/usr/local/bin/postgres -D/usr/local/var/postgres -r /usr/local/var/postgres/server.log myusername 1187 0.0 0.0 2434892 540 s000 S + 10:35 0: 00,00 GREP Postgres
Тест работает ли сокет домена Unix:
Ls -l/TMP/| grep PGSQL | grep -v grep
ничего не получает.
Является ли postgres прослушиванием интернет-протокола localhost?
PSQL -H локальный
получает меня:
Psql: FATAL: база данных "локальный" не существует
ли Postgres прослушивание на сокет домена Unix ?
PSQL -H /tmp/.s.PGSQL.5432
получает меня:
Psql: FATAL: база данных "/tmp/.s.PGSQL.5432" делает не существует
нормально, Postgres прослушивает как на локальном хосте на интернет-протоколе и на «unix domain socket» на /tmp/.s.PGSQL.5432. Вы можете легко протестировать его с помощью 'psql -H localhost' или' psql -H/tmp/.s.PGSQL.5432'. Флаги, которые вы даете для lsof, тоже кажутся неправильными. Чтобы проверить, работает ли PG, вы можете использовать 'ps aux | grep postgres' Вы можете узнать, присутствует ли сокет домена unix, выпуская 'ls -l/tmp/| grep PGSQL | grep -v grep' – wildplasser
@wildplasser Спасибо большое. Я обновил вопрос с результатами. Похоже, что сокет домена unix не работает. Любые предложения очень ценятся. – Undistraction
@wildplasser Удалил файл блокировки, и он работает нормально. Спасибо за вашу помощь – Undistraction