Bagaimana saya bisa tahu apakah server Postgresql saya berjalan atau tidak?
Saya mendapatkan pesan ini:
[~/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?
Memperbarui:
> 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
Perbarui 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
Ramy
sumber
sumber
Jawaban:
Cara termudah untuk memeriksa proses yang sedang berjalan:
Dan cari perintah yang terlihat seperti ini (versi Anda mungkin bukan 8.3):
Untuk memulai server, jalankan sesuatu seperti ini:
sumber
pgrep postgres
juga bekerja. Ataups auxwww | grep [p]ostgres
untuk mencegah agargrep
tidak diambil.ps | grep
saran malpraktek.pgrep
bisa diterima, nyaris.pg_ctl status
adalah besar .ps auxwww | grep postgres
akan cocokgrep postgres
, danless /var/log/postgres/whatever
./Library/PostgreSQL/8.3/data
dibuat secara sewenang-wenang oleh pengguna melaluiinitdb
perintah. di sini adalah 8,3 dokumenAnda dapat menjalankan perintah berikut untuk menentukan apakah postgress sedang berjalan:
Anda juga ingin menyetel
PGDATA
variabel lingkungan.Inilah yang saya miliki di
~/.bashrc
file saya untuk postgres:Untuk membuatnya berlaku, ingatlah untuk mengambilnya seperti ini:
Sekarang, coba dan Anda akan mendapatkan sesuatu seperti ini:
sumber
Anda mungkin tidak memulai postgres.
Jika Anda menginstal menggunakan HomeBrew, init harus dijalankan sebelum hal lain dapat digunakan.
Untuk melihat instruksi, jalankan
brew info postgres
Setelah Anda menjalankannya, itu akan mengatakan sesuatu seperti:
Jika Anda masih mengalami masalah, periksa firewall Anda. Jika Anda menggunakan yang bagus seperti HandsOff! dan itu dikonfigurasi untuk memblokir lalu lintas, maka halaman Anda tidak akan melihat database.
sumber
Pada PostgreSQL 9.3, Anda dapat menggunakan perintah
pg_isready
untuk menentukan status koneksi server PostgreSQL.Dari dokumen :
sumber
Itu tergantung di mana server postgresql Anda diinstal. Anda menggunakan pg_ctl untuk memulai server secara manual seperti di bawah ini.
sumber
Itu
pg_ctl status
perintah yang disarankan dalam jawaban pemeriksaan lain yang proses postmaster ada dan jika demikian laporan bahwa itu berjalan. Itu tidak berarti ia siap menerima koneksi atau menjalankan kueri.Lebih baik menggunakan metode lain seperti menggunakan
psql
untuk menjalankan kueri sederhana dan memeriksa kode keluar, misalnyapsql -c 'SELECT 1'
, atau gunakanpg_isready
untuk memeriksa status koneksi .sumber
psql -c "SELECT 1" -d {dbname} > /dev/null || postgres -D /usr/local/var/postgres >postgres.log 2>&1 &
jika Anda ingin memeriksa dan memulai postgres sekaligus (berguna untuk skrip otomatisasi).