開発環境
macOS Catalina 10.15.7
PostgreSQL 13.1
Homebrew 2.7.0
概要
環境構築(docker等は一切使っていない)でPostgresqlをデータベースに採用した際に、Postgresqlを起動しようとしても起動できず、信じられないほど時間がかかったのでその問題の原因についてシェアしたいと思います。
構築の手順
自分が過去に書いた記事があるのでこちらを参考にしてください。
結果的には出来ませんでしたが、自分はこの手順に沿って環境構築を進めてました。
【初学者向け】 PostgreSQLの環境構築
https://qiita.com/msy7822/items/98525f9a1de6332ba323
自分が遭遇したエラー
自分が遭遇したエラーは下記のような感じです!
当てはまる方がいましたらもしかしたら自分と同じ原因かもしれないです!!
postmaster.pidファイルを削除しても、「postmaster.pid already exists」の文言が発生していたり、
$ brew services start postgresql
や
$ postgres -D /usr/local/var/${postgresqlのディレクトリ}
などのコマンドを実行してもpostgresqlが起動しないなどのエラーが発生した場合、自分もそうでしたが、バックグラウンドですでにPostgreSQLが走っている可能性があります。
故にコンフリクトとして上記のようなエラーが発生していたと考えられます!!
解決方法
① まずは、PostgreSQLがバックグラウンドで走っていることを確認するために、下記のコマンドで起動していないはずのPostgreSQLがネットワークソケット上で動いていることを確かめましょう。
$ lsof -i:${Postgresqlのポート番号}
② ①で得られた結果のうち「PID」の値(数字)をkillコマンドで停止させることを試みます。
$ kill -9 ${PIDの値}
③ もう一度、①コマンドでPostgreSQLの起動状況を確認してみてください(ここで何かしら起動していたら、おそらくPostgreSQLがバックグラウンドで起動されているということになります。)
④ ③が確認出来たら特に何もせず、データベースの作成を試みてみてください!
ここで無事にデータベースの作成に成功したら環境構築は完了です。
- データベース作成コマンド
$ createdb ${任意のデータベース名}
- ユーザー作成コマンド
$ createuser ${任意のユーザー名}
参考
[PostgreSQL] よく使うコマンドまとめ
https://dev.classmethod.jp/articles/postgresql-organize-command/
【 lsof 】コマンド――オープンしているファイルを一覧表示する
https://www.atmarkit.co.jp/ait/articles/1904/18/news033.html
PostgreSQLのインストールから起動/停止まで
https://qiita.com/sf213471118/items/0e843af332ea0210c810