Как узнать, работает ли мой сервер 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?
Update:
> 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
Ответ 1
Самый простой способ проверить запущенные процессы:
ps auxwww | grep postgres
Ищите команду, которая выглядит примерно так (ваша версия может быть не 8.3):
/Library/PostgreSQL/8.3/bin/postgres -D /Library/PostgreSQL/8.3/data
Чтобы запустить сервер, выполните следующее:
/Library/PostgreSQL/8.3/bin/pg_ctl start -D /Library/PostgreSQL/8.3/data -l postgres.log
Ответ 2
Вы можете выполнить следующую команду, чтобы определить, выполняется ли postgress:
$ pg_ctl status
Вы также захотите установить переменную среды PGDATA
.
Вот что у меня в файле ~/.bashrc
для postgres:
export PGDATA='/usr/local/var/postgres'
export PGHOST=localhost
alias start-pg='pg_ctl -l $PGDATA/server.log start'
alias stop-pg='pg_ctl stop -m fast'
alias show-pg-status='pg_ctl status'
alias restart-pg='pg_ctl reload'
Чтобы заставить их вступить в силу, не забудьте указать их так:
$ . ~/.bashrc
Теперь попробуйте, и вы должны получить что-то вроде этого:
$ show-pg-status
pg_ctl: server is running (PID: 11030)
/usr/local/Cellar/postgresql/9.2.4/bin/postgres
Ответ 3
Вероятно, вы не инициировали postgres.
Если вы установили с помощью HomeBrew, init должен быть запущен до того, как что-либо еще станет пригодным для использования.
Чтобы увидеть инструкции, запустите brew info postgres
# Create/Upgrade a Database
If this is your first install, create a database with:
initdb /usr/local/var/postgres -E utf8
To have launchd start postgresql at login:
ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
Then to load postgresql now:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Or, if you don't want/need launchctl, you can just run:
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
Как только вы запустите это, он должен сказать что-то вроде:
Успех. Теперь вы можете запустить сервер базы данных, используя:
postgres -D /usr/local/var/postgres or
pg_ctl -D /usr/local/var/postgres -l logfile start
Если у вас все еще есть проблемы, проверьте свой брандмауэр. Если вы используете хороший, как HandsOff! и он был настроен для блокировки трафика, тогда ваша страница не увидит базу данных.
Ответ 4
Это зависит от того, где установлен ваш сервер postgresql. Вы используете pg_ctl для запуска сервера вручную, как показано ниже.
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
Ответ 5
Как и в PostgreSQL 9.3, вы можете использовать команду pg_isready
, чтобы определить статус соединения сервера PostgreSQL.
Из docs:
pg_isready возвращает 0 в оболочку, если сервер принимает соединения нормально, 1, если сервер отклоняет соединения (например, во время запуска), 2, если не было ответа на попытку подключения, и 3, если не была предпринята попытка ( например, из-за недопустимых параметров).
Ответ 6
Команда pg_ctl status
, предлагаемая в других ответах, проверяет, существует ли почтовый мастер, и если да, то он сообщает об этом. Это не обязательно означает, что он готов принимать соединения или выполнять запросы.
Лучше использовать другой метод, например, с помощью psql
для запуска простого запроса и проверки кода выхода, например. psql -c 'SELECT 1'
или используйте pg_isready
чтобы проверить состояние подключения.