読者です 読者をやめる 読者になる 読者になる

カッパでも分かるiOSアプリゲーム開発

カッパがひたすらゲーム制作に関することを書くブログです。Railsに関するTipsもたまにまとめてます。

PostgreSQL まで俺を拒絶するというのか

スポンサードリンク

Ruby on Rails 5アプリケーションプログラミング

f:id:InvokeTwoA:20151023183618p:plain「ふぅ。極めしPostgreSQL 」
f:id:InvokeTwoA:20151215172640p:plain「たいへんですカッパさん! postgresql が繋がらなくなりました!」

$ psql -d kappa_development                
        psql: could not connect to server: No such file or directory
	Is the server running locally and accepting
	connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

f:id:InvokeTwoA:20151023183618p:plain「ケェェェェ!」
f:id:InvokeTwoA:20151215172640p:plain(カッパさんがデートに断られた時のような辛い表情になっている!   どうでも良いか)
f:id:InvokeTwoA:20151023183618p:plain「俺が使いこなせない PostgreSql なんてクソだ!」
f:id:InvokeTwoA:20151215172640p:plain(大抵何かをディスる人って、それを使いこなせてない人だよなー)

  • net を見るとこの手のエラーはよくある模様

対応1: pid ファイルを消せ!

f:id:InvokeTwoA:20151023183618p:plain「スタックオーバーフローによると下記コマンドで解決できるらしい! 説明文は面倒だから読んでない」
f:id:InvokeTwoA:20151215172640p:plain「……」
f:id:InvokeTwoA:20151023183618p:plain「よーし、何も考えずにコマンド実行だー!」

rm /usr/local/var/postgres/postmaster.pid

f:id:InvokeTwoA:20151023183618p:plain「ふー。 そもそも postmaster.pid が存在しなかったぜ」
f:id:InvokeTwoA:20151215172640p:plain「存在しないものを rm しろ……これは哲学か何かか?」
f:id:InvokeTwoA:20151023183618p:plain「或いはその無為にしか見えない行為こそが、人間の本質なのかもしれない(ダークソウル風説明文)」

対策2: brew で postgresql を再起動

f:id:InvokeTwoA:20151023183618p:plain「多くの問題は再起動で解決する。そうか! 俺の人生も再起動すれば良かったんだ!」
f:id:InvokeTwoA:20151215172640p:plain「残念、人生の再起動は不可能なのです」

$ brew services restart postgresql

Stopping `postgresql`... (might take a while)
==> Successfully stopped `postgresql` (label: homebrew.mxcl.postgresql)
==> Successfully started `postgresql` (label: homebrew.mxcl.postgresql)
  • 再起動はうまくいった模様
  • しかし依然として postgresql の接続には失敗する
  • 何がどうなってるやら

対策3: postgres を一から起動して見る

f:id:InvokeTwoA:20151023183618p:plain「すべての起源である下記コマンドを実行してみたよ」

$ postgres -D /usr/local/var/postgres

FATAL:  could not open directory "pg_tblspc": No such file or directory
LOG:  database system is shut down

f:id:InvokeTwoA:20151023183618p:plain「pb_tblspc が無いぞ! と出たので、mkdir で作ってみたら 今度はpg_replslotが無いとでた!」
f:id:InvokeTwoA:20151215172640p:plain「ひたすら作っていきましょう」

mkdir /usr/local/var/postgres/pg_tblspc
mkdir /usr/local/var/postgres/pg_replslot
mkdir /usr/local/var/postgres/pg_stat
mkdir /usr/local/var/postgres/pg_twophase
mkdir /usr/local/var/postgres/pg_logical
mkdir /usr/local/var/postgres/pg_logical/snapshots
mkdir /usr/local/var/postgres/pg_logical/mappings
mkdir /usr/local/var/postgres/pg_commit_ts

f:id:InvokeTwoA:20151023183618p:plain「ひたすらディレクトリを作っていった結果、ついに起動に成功したぞー!」
f:id:InvokeTwoA:20151215172640p:plain「うおおおおお」

$ postgres -D /usr/local/var/postgres                                                                                               ||<

- 闇が深そうだけど動いて良かった
- なぜ闇が暗いのかとかは興味ないので今回は調べず

* まとめ