Как я могу узнать, работает ли мой сервер Postgresql или нет?
Я получаю это сообщение:
[~/dev/working/sw] sudo bundle exec rake db:migrate
rake aborted!
could not connect to server: Connection refused
Is the server running on host "localhost" and accepting
TCP/IP connections on port 5432?
Обновить:
> which postgres
/usr/local/bin/postgres
> pg_ctl -D /usr/local/bin/postgres -l /usr/local/bin/postgres/server.log start
pg_ctl: could not open PID file "/usr/local/bin/postgres/postmaster.pid": Not a directory
Обновление 2:
>pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
server starting
sh: /usr/local/var/postgres/server.log: No such file or directory
macos
postgresql
Рами
источник
источник
Ответы:
Самый простой способ проверить запущенные процессы:
И найдите команду, которая выглядит примерно так (ваша версия может быть не 8.3):
Чтобы запустить сервер, выполните что-то вроде этого:
источник
pgrep postgres
тоже работает. Илиps auxwww | grep [p]ostgres
чтобы предотвратитьgrep
подхват.ps | grep
предположение о злоупотреблении служебным положением.pgrep
приемлемо, едва.pg_ctl status
это здорово .ps auxwww | grep postgres
будет соответствоватьgrep postgres
, иless /var/log/postgres/whatever
./Library/PostgreSQL/8.3/data
произвольно создается пользователем с помощьюinitdb
команды. вот документ 8.3Вы можете запустить следующую команду, чтобы определить, запущен ли postgress:
Вы также захотите установить
PGDATA
переменную среды.Вот что у меня в
~/.bashrc
файле для postgres:Чтобы они вступили в силу, не забудьте указать источник следующим образом:
Теперь попробуйте, и у вас должно получиться что-то вроде этого:
источник
Вероятно, вы не запускали postgres.
Если вы установили с помощью HomeBrew, init необходимо запустить, прежде чем что-либо еще станет пригодным для использования.
Чтобы увидеть инструкции, запустите
brew info postgres
После того, как вы его запустите, он должен сказать что-то вроде:
Если проблемы по-прежнему возникают, проверьте брандмауэр. Если использовать хороший, например HandsOff! и он был настроен на блокировку трафика, тогда ваша страница не будет видеть базу данных.
источник
Начиная с PostgreSQL 9.3, вы можете использовать команду
pg_isready
для определения статуса подключения сервера PostgreSQL.Из документов :
источник
Это зависит от того, где установлен ваш сервер postgresql. Вы используете pg_ctl, чтобы вручную запустить сервер, как показано ниже.
источник
Команда,
pg_ctl status
предложенная в других ответах, проверяет, существует ли процесс postmaster, и если да, то сообщает, что он запущен. Это не обязательно означает, что он готов принимать соединения или выполнять запросы.Лучше использовать другой метод, например, использовать
psql
для запуска простого запроса и проверки кода выхода, напримерpsql -c 'SELECT 1'
, или использоватьpg_isready
для проверки статуса соединения .источник
psql -c "SELECT 1" -d {dbname} > /dev/null || postgres -D /usr/local/var/postgres >postgres.log 2>&1 &
если вы хотите проверить и запустить postgres за один раз (удобно для сценариев автоматизации).