Когда я попытался включить базу данных Postgres 15 через Postgres.app на порту 5432, она не работает и не включается. Я пробовал все, что в моих силах, чтобы решить эту проблему, но я не могу понять это.
Это всплывающее окно с ошибкой, которое появляется, и я получаю эту ошибку в журнале сервера:
2023-04-19 00:10:05.163 PDT [35503] LOG: listening on IPv6 address "::1", port 5432
2023-04-19 00:10:05.163 PDT [35503] LOG: listening on IPv4 address "127.0.0.1", port 5432
2023-04-19 00:10:05.163 PDT [35503] LOG: could not bind Unix address "/tmp/.s.PGSQL.5432": Address already in use
2023-04-19 00:10:05.163 PDT [35503] HINT: Is another postmaster already running on port 5432?
2023-04-19 00:10:05.163 PDT [35503] WARNING: could not create Unix-domain socket in directory "/tmp"
2023-04-19 00:10:05.163 PDT [35503] FATAL: could not create any Unix-domain sockets
2023-04-19 00:10:05.164 PDT [35503] LOG: database system is shut down
Примечание. Я не устанавливал Postgres через Homebrew, и база данных запускается нормально, если я выберу другой порт, например 5433.
Я знаю, о чем вы думаете, у меня есть процесс, работающий на порту 5432?
Я проверил это с помощью lsof -i :5432
, sudo lsof -i :5432
и netstat | grep "5432" | grep "LISTEN"
на порту 5432, и терминал оказался пустым. Я ожидал, что мешающий процесс появится в списке процессов, а затем я просто собирался убить этот процесс, чтобы освободить порт. Однако на порту 5432 не было буквально никаких процессов.
Я даже пытался удалить и переустановить Postgres.app и Postgres, и это все равно не решило проблему (если только я не сделал это неправильно). Вроде схожу с ума, пытаясь решить эту проблему, гуглил и пробовал все, что мог. Другие номера портов работают, но не порт 5432. Кроме того, у меня нет конфиденциальных данных, которые нужно хранить или сохранять, я просто пытаюсь заставить мой локальный Postgres работать на 5432, потому что мне не нужно менять все на 5433 или что-то всякий раз, когда я использую Postgres через кодовую базу. Так что, если есть какие-то хакерские способы выполнить эту работу, включающую удаление вещей, я не согласен.
Ценим любую помощь!
Не очень полезно, сэр :-|
Я имею в виду, что определенно есть что-то противоречивое. Может ли это быть ранее неудачное завершение работы, из-за которого сокет unix остался на месте (файл /tmp/.s.PGSQL.5432
, упомянутый в сообщении об ошибке). Вы можете попробовать удалить это, если можете
Ни одна из команд, которые вы нам показали, не укажет, существует ли уже файл /tmp/.s.PGSQL.5432.
Я понимаю! Я не мог найти много информации о том, что такое /tmp/.s.PGSQL.5432
или для какой цели он служит (должно быть, я недостаточно хорошо гуглил 😅). Спасибо за помощь jjanes!
Если посмотреть сообщения, то проблем с привязкой TCP-сокета к порту 5432 нет. Проблема с созданием файла доменного сокета, потому что файл уже есть /tmp/.s.PGSQL.5432
. Удалите этот файл, и сервер должен запуститься.
Ну, в подсказке было сказано HINT: Is another postmaster already running on port 5432?
, поэтому я думал в этом направлении, и я никогда не понимал, о чем /tmp/.s.PGSQL.5432
, поэтому я обязательно посмотрю на это!
Это сработало! Запустил ls -a
под /tmp
и нашел файл, а затем запустил sudo rm .s.PGSQL.5432
, чтобы удалить его. Спасибо!
Сообщения об ошибках не лгут