PostgreSQLのインストールに小一時間悩まされた話
技術ばっかり書いてても自分もみんなも面白くないだろうから少し心境を語る。
最近は週1ペースで楽しいことが起こってる(というか起こしてもらっている)から何かと結構頑張れている気がする。
人と会う機会が少ないからこそ話したり情報共有する機会が大事。
ブログ始めて2週間くらいしか経ってないけど、少しずつ見てくれる人が増えてるのも嬉しい。最近はそんな感じ。
では本題に移ろう。(失敗例→成功例の順に説明するから、成功例だけ見たい方はスクロールしてね。)
PostgreSQLのインストールエラーを解消してみた(ボツ編)
以前紹介したWebアプリ開発の参考書を進めてたら環境構築で躓いた。
参考にした書籍はコレ↓
どうやらデータベースにはPostgreSQLを使うらしい。
MacOSで開発を進めてるから、brewでインストールをすることに。
brew install postgresql を入力するとインストール自体はしっかり出来た。インストール後に psql --version と打ってPostgreSQLのバージョンが表示されればインストールは完了。(はてな記法とかMarkdown記法知らんからソースコードが見づらくてゴメンネ)
ホームディレクトリに.bash_profileが無い場合は touch ~/.bash_profile を実行、ある場合はvi ~/.bash_profileを実行して、ファイルの中に以下を記載する。
export PATH=$PATH:/usr/local/Cellar/postgresql/13.3/bin (ここでの13.3はインストールしたバージョンに応じて適宜変更)
その後、source ~/.bash_profile を実行すればパスが通る。
そしたらPostgreSQLを起動するために brew services start postgresql と打ってから、createdb ”作りたいデータベース名” と打てばデータベースが作成される。本来は。
ただし自分が作業してた時はエラー吐かれて動かなかった。
とてもざっくりと言えばサーバに接続出来ないからデータベースにもアクセス出来ないよってエラー。(もしかしたら成功例の方の、②から試しても解決できるかもしれない)
とりあえずエラーメッセージをコピペして検索してみる。参考に試してみたけどダメだった内容とサイトを軽く紹介。人によってはココで解決するかも?
- PostgresSQLサーバを起動する
sudo systemctl start postgresql を実行するとサーバの再起動が出来るらしい。
OSが新しいと(現在はBig Sur使用)シェルにzshが使われていると思うんだけど、そもそもzshに systemctl コマンドが対応してなかったのでボツ。
postgresql — PostgreSQLエラー:データベースtemplate1に接続できませんでした:サーバーに接続できませんでした:そのようなファイルまたはディレクトリはありません
- postmaster.pidを削除する
rm /usr/local/var/postgres/postmaster.pid を実行してpostmaster.pidを消せば直るよって書いてあったけど、そもそもそんなフォルダもファイルも無かったのでボツ。(でも後々使うことになった)
- brewでインストールし直す
インストールに失敗していなかったのでボツ。古いバージョンをインストールしたことがある人はこれで直る可能性もある。
- PostgreSQLのサービスを開始・停止・再起動してみる
1つ目と内容的には似てる。けどちょっと違うこと書いてあったから一応。
特に直らなかったけど、postgres -D /usr/local/var/postgres を実行すると
PostgreSQLの実行ログが見れるって情報は、エラーを見つけるのに後でかなり役立った。
macos+homebrew+postgres で接続エラー「PG::ConnectionBad: 〜"/tmp/.s.PGSQL.5432"?」を解決 - Qiita
PostgreSQLのインストールエラーを解消してみた(成功編)
結果的には以下の3サイトの情報を見比べて解決に至った。
Postgresqlに接続できなくなった時の対処法 - Qiita
ruby on rails - Postgres could not connect to server - Stack Overflow
HomebrewでPostgresqlをインストール(MacOS 10.8) - Qiita
大体どこのサイトにも /usr/local/var/postgresってフォルダがあるみたいに記載されてるのに確認してみたら無い。3つ目のサイトにデータベースを初期化するために、①initdb /usr/local/var/postgres を実行するとあったので、実行したらフォルダが作成された。
これだけだと直らないから、②sudo chmod 1777 /tmp を実行して/tmpに権限を設けさせる。で、さっき紹介した postgres -D /usr/local/var/postgres を実行してエラーを確認すると、
という訳で ③rm /usr/local/var/postgres/postmaster.pid を実行してサヨナラする。これで完了。あとは psql -l とか createdb ”作りたいデータベース名” を実行してみてエラーが吐き出されなければ無事解決!!ってな感じ。
とても読みづらい内容だったと思うけど、誰かの助けになるかもしれないと思って書いてみた。
めっちゃ時間かかったから頑張ったように思えるけど、これ環境構築だけしか進んでなくね・・・!?!?(一応参考書の内容としてはDjangoの説明がこの前のページに挟まれてたし、実際100ページまで読んだので前回から70ページ以上進んだ。)
次の章からアプリケーション開発に入っていくっぽいから、今までの座学と違っておもしろそう。次回からも頑張っていくぞ〜〜!