У меня проблема с запуском Postgresql на Gentoo.
$ /etc/init.d/postgresql-9.1 start
* Socket conflict.
* A server is already listening on:
* /var/run/postgresql/.s.PGSQL.5432
* HINT: Change PGPORT to listen on a different socket.
Я удалил файл /var/run/postgresql/.s.PGSQL.5432
служба запускается и работает нормально. Я думаю, что сервер отключился и оставил файл там. Я проверил с помощью netstat, есть ли процесс, прослушивающий этот порт, но его не было.
У меня вопрос, как я могу избежать этой проблемы в будущем?
Сокет должен быть удален после завершения работы postgres (чисто). Скорее всего, причина в том, что ваш компьютер был нечисто перезагружен (отключение питания, кнопка сброса, ...) или произошел сбой postgres, и у него не было времени / возможности удалить файл сокета.
Если вы выполните полное выключение / перезагрузку, этого вообще не должно произойти. Если postgres выйдет из строя, проблема посерьезнее, чем устаревший сокет. Если аппаратные перезагрузки происходят часто, у вас есть большая вероятность потери / повреждения данных.
Вы можете удалить сокеты из одного из сценариев инициализации (зависит от дистрибутива) во время загрузки или отредактировать сценарий инициализации postgres, чтобы удалить сокет перед запуском (опасно, если вы случайно запустите его, когда один postgresd уже запущен, и вы удалите его сокет ).
Если это не ошибка программного обеспечения, вам просто нужно убедиться, что вы корректно останавливаете сервер postgresql, когда это необходимо. Это также важно, чтобы избежать потери данных.