在 Arch Linux 上,執行 initdb 命令後,我收到以下訊息:
Success. You can now start the database using:
pg_ctl -D /var/lib/postgres/data -l logfile start
作為 postgres 用戶,我嘗試使用上面的命令啟動並獲取錯誤:
FATAL: could not create lock file "/run/postgresql/.s.PGSQL.5432.lock" no such file or directory
我退出到 postgres 用戶並嘗試透過上面的命令啟動並獲得:
pg_ctl: could not open PID file "/var/lib/postgres/data/postmaster.pid" : Permission denied
我嘗試將上面的命令作為 sudo 運行:
sudo pg_ctl -D /var/lib/postgres/data -l logfile start
並得到:
pg_ctl: cannot run as root.
答案1
當手動啟動 postgres 時,即不使用打包的啟動腳本,您需要執行該腳本的操作:
建立對其他人
/run/postgresql
具有寫入權限postgres
和讀取權限的目錄。/run
通常安裝在 RAM 磁碟上,因此它是空的是正常的。pg_ctl
僅以使用者身分執行postgres
。sudo -u postgres
如果sudo
必須為此使用,請使用。
您提到的第一個錯誤由#1 解決,另外兩個錯誤由#2 解決。或者只需使用作業系統軟體包附帶的啟動腳本,它可以處理這些細節,因此您無需學習它們。
醫生在https://wiki.archlinux.org/index.php/PostgreSQL告訴:
這意味著systemctl enable postgresql.service
並且systemctl start postgresql.service
,相反到pg_ctl [...options...] start
。
答案2
值得一提的是,我想補充一點,我剛剛在 Ubuntu 上使用 Postgresql 10 時遇到了一個密切相關的問題。事實上,could not open PID file “/var/lib/postgres/data/postmaster.pid”
這就是我來到這裡的原因。我嘗試了在這裡和其他地方學到的東西,但都無濟於事,然後求助於古老的重啟。一切都很順利。那好吧。我不能說我學到了很多東西,或者它教了很多東西,除了記住嘗試重新啟動...