目次
エラーコードにいらつく
Ruby on Rails でアプリをつくったりスクールの課題をシコシコ進めているとたまに出てくるエラーコード
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
新しくテーブルつくった、カラムを追加した際にマイグレーションをかけようとしたとき、よく出てきます。
↓こんな感じ。
$ bin/rake db:migrate Running via Spring preloader in process 4024 rake aborted! PG::ConnectionBad: 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"?
これまでメンターの手を借りて、なんとか解決していたのですが、正直一体何が起こっているのか分かってなかったので 今回自力での解決に挑戦してみます。
エラーコードでググってみる。
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
でググると
日本語やら英語サイトやら混同して出てくる。
けどpostgresをインストールしなおしたり
怪しげなパッチを入れたりとで正直良くわかんない。
対処療法的にちょっと割り切れなかったので、英語のQ&Aサイトスタックオーバーフローを見て回ることに。
うへぇ英語・・・orz
そこに書かれている内容をなぞりながら考察を加えていこうと思います。
解決までのプロセス
postgresをアップロードしてみる
まず打つように書かれたコマンドは
brew install postgres
バージョン管理ソフトhomebrewを使って,postgreをアップロードするっぽい。
途中まで無事に進んでるっぽかったんですが、後半部分に怪しげなエラーが。
Please delete these paths and run `brew update`. Error: postgresql-9.6.1 already installed To install this version, first `brew unlink postgresql`
linkファイル=windowsでいうシートカット
がおかしいから一度はずしてもう1回linkしなおしてちょんまげ
と解釈。
linkファイルの再構成
というわけで先のエラーコード末尾に書かれていた下記コマンドを入力。
$ brew unlink postgresql Unlinking /usr/local/Cellar/postgresql/9.6.1... 375 symlinks removed
うむ、なんかうまくいったっぽい。もう一度linkをつけなおす。
$ brew link postgresql Linking /usr/local/Cellar/postgresql/9.6.1... 375 symlinks created
bin/rake db:migrate を打つも解決せず。
うまくいったかなと再度
bin/rake db:migrate
と打つが・・・・
$ bin/rake db:migrate Running via Spring preloader in process 5345 rake aborted! PG::ConnectionBad: 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"? -e:1:in `<main>' Tasks: TOP => db:migrate (See full trace by running task with --trace)
、変わらず。うそかーい。
servicesのインストール・起動
でスタックオーバーフローの次の工程をみると、下記コマンドが。
brew tap homebrew/services
homebrewのservicesという機能を追加するっぽい。
なんじゃservicesて。って調べたらでてきました。
Homebrew Servicesを使ってサービスを管理する
ローカルのデータベースを手動で制御するソフトっぽい。
このservicesを使ってpostgreを再起動させます。
いったんスタートさせ
$ brew services start postgresql ==> Successfully started `postgresql` (label: homebrew.mxcl.postgresql)
止めて
$ brew services stop postgresql Stopping `postgresql`... (might take a while) ==> Successfully stopped `postgresql` (label: homebrew.mxcl.postgresql)
再起動。
$ brew services restart postgresql ==> Successfully started `postgresql` (label: homebrew.mxcl.postgresql)
いずれも成功。
再度 bin/rake db:migrate で無事成功!
今度こそ!
$ bin/rake db:migrate Running via Spring preloader in process 6179 == 20170227063114 CreateComments: migrating =================================== -- create_table(:comments) -> 0.0594s == 20170227063114 CreateComments: migrated (0.0596s) ==========================
えがった・・・。
ふりかえり
結局、postgreを手動で再起動したことで復活した感じ。
クラウドの仮想開発環境 cloud9 では一定時間が経過するとデータベースが止まってしまうため
sudo service postgresql start
を打ち込んで都度再起動してましたが
ローカル開発環境でも、たまーに同じことが起こるんでしょうかね。
電源切らない限りずっと動いてるんかと思ってましたワイ。
今日の一句
“ローカルも たまに休憩 はさみます(多分)”
コメントを残す