2012-06-22 4 views
3

Прежде всего извиняюсь, если «файл порта не является правильной терминологией», но 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

tmp directory

Насколько я понимаю, этот файл предотвращает редактирование файла порта, который отсутствует.

Я попытался использовать машину времени, чтобы найти этот недостающий файл, но кажется, что 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" делает не существует

+1

нормально, 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

+0

@wildplasser Спасибо большое. Я обновил вопрос с результатами. Похоже, что сокет домена unix не работает. Любые предложения очень ценятся. – Undistraction

+0

@wildplasser Удалил файл блокировки, и он работает нормально. Спасибо за вашу помощь – Undistraction

ответ

2

«port file» - это unix-сокет, который прослушивает PostgreSQL. Это создаст его при запуске. Остановите сервер PostgreSQL, удалите файл .lock, если он все еще существует, перезапустите PG и проверьте, возвращается ли ваш сокет.

Я озадачен тем, как там не может быть. Я никогда не слышал об этом раньше.

+0

Спасибо. Я добавил изображение моего tmp-файла в вопрос. – Undistraction

+0

Удаляет файл блокировки, и он работает нормально. Спасибо за вашу помощь. – Undistraction

+0

Возможно, GUI подавляет отображение нефайлов. – wildplasser

1

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

Удаление .s.PGSQL.5432.lock и перезапуск postgres, после чего запуск (Rails) сервера нормально работал нормально.

+0

Вы должны принять правильный ответ Ричарда вместо публикации другого. Также «и перезапуск postgres, а затем запуск сервера» не имеет смысла. –

+0

@ Erwin Brandstetter Ok – Undistraction

+0

@ Erwin Brandstetter Rails и Postgres - это две разные вещи. Я перезапустил Postgres, а затем перезапустил сервер Rails. – Undistraction

Смежные вопросы