1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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"?での対応

Last updated at Posted at 2022-01-27

スクリーンショット 2022-01-26 20.52.27.png
久しぶりにRailsアプリを起動したらエラーが起きたので原因を探っていく
最初のエラー

deeplで翻訳してくれた

サーバに接続できませんでした: そのようなファイルまたはディレクトリはありません。サーバーはローカルで動作し、Unixドメインソケット「/tmp/.s.PGSQL.5432」での接続を受け入れているか?

問題を解く

  1. サーバに接続できない
  2. ファイル、ディレクトリがない
  3. サーバがローカルで動作しているか、そのドメインは/tmp/.s.PGSQL.5432なのか

エンジニアとしては初心者なのでこの順序で解いていく

1を解く

サーバに接続できない => サーバ起動しているか
サーバーの状態確認はsystemctlなどのコマンドもあるようですが、現段階の自分のMacでは使えません
homebrewでダウンロードしていたPostgreSQLでしたのでDBサーバの起動状態の確認は

% brew services list
Name          Status     User         File
emacs         none
mysql@5.7     none
postgresql    error  256 hogehoge ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
postgresql@12 none
postgresql@13 none
unbound       none

こちらの記事

Homebrew Servicesを使ってサービスを管理する

brew servicesについてかいてあったので引用

ここで、Plistの欄がありますが、services startすると、 plistがLaunchAgentsディレクトリ等にコピーされ、以後、 自動で起動時などに読み込まれてコマンドを起動したりする様になります。

エラーになっているので停止
brew services stop postgresql

psqlコマンドを打って
postgresqlpsql -Vからpsql (PostgreSQL) 14.1とわかりました

そもそも洒落っ気を出してiterm2なるターミナルに代わる使い勝手よさそうなものを導入しようとしてhomebrewをUpdateしたあたりからおかしいと思いました。Posgreの14て新しくね?

brew services start postgresql@13 としてもう一度ブラウザを確認
スクリーンショット 2022-01-26 20.52.27.png

データベースがないことでエラーが起きているようです。
rails db:createrails db:migrate を実行

railsサーバーにはエラーなく入ることは出来たのですが以前のテーブルデータがございません。大丈夫か?

これが正しい答えなのでは?

さらに記事を引用します。

Homebrewでインストールしたpostgresqlが起動しないのを調べた

というか以前もpostgreをアップグレードしたときにお世話になった記事のようです。
まずは brew info postgresql

% brew info postgresql
postgresql: stable 14.1 (bottled), HEAD
Object-relational database system
https://www.postgresql.org/
/usr/local/Cellar/postgresql/14.1_1 (3,304 files, 45MB) *
  Poured from bottle on 2022-01-24 at 23:50:17
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/postgresql.rb
License: PostgreSQL
==> Dependencies
Build: pkg-config ✔
Required: icu4c ✔, krb5 ✔, openssl@1.1 ✔, readline ✔
==> Options
--HEAD
	Install HEAD version
==> Caveats
To migrate existing data from a previous major version of PostgreSQL run:
  brew postgresql-upgrade-database

This formula has created a default database cluster with:
  initdb --locale=C -E UTF-8 /usr/local/var/postgres
For more details, read:
  https://www.postgresql.org/docs/14/app-initdb.html

To restart postgresql after an upgrade:
  brew services restart postgresql
Or, if you don't want/need a background service you can just run:
  /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres
==> Analytics
install: 90,012 (30 days), 351,492 (90 days), 1,536,916 (365 days)
install-on-request: 86,592 (30 days), 338,228 (90 days), 1,470,528 (365 days)
build-error: 38 (30 days)

ここに重要なことが書いてありますね。

==> Caveats
To migrate existing data from a previous major version of PostgreSQL run:
  brew postgresql-upgrade-database

以前のメジャーバージョンのPostgreSQLから既存のデータを移行するには、以下を実行します。
brew postgresql-upgrade-database

データ移行がこれでできるのでは?先ほどテーブルがなかったことが解決できることに期待
その前に起動中のpostgresql@13でもinfoをかける

% brew info postgresql@13
postgresql@13: stable 13.5 (bottled) [keg-only]
Object-relational database system
https://www.postgresql.org/
/usr/local/Cellar/postgresql@13/13.5_1 (3,233 files, 42.8MB)
  Poured from bottle on 2022-01-26 at 08:06:31
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/postgresql@13.rb
License: PostgreSQL
==> Dependencies
Build: pkg-config ✔
Required: icu4c ✔, krb5 ✔, openssl@1.1 ✔, readline ✔
==> Caveats
Previous versions of this formula used the same data directory as
the regular PostgreSQL formula. This causes a conflict if you
try to use both at the same time.

In order to avoid this conflict, you should make sure that the
postgresql@13 data directory is located at:
  /usr/local/var/postgresql@13

This formula has created a default database cluster with:
  initdb --locale=C -E UTF-8 /usr/local/var/postgresql@13
For more details, read:
  https://www.postgresql.org/docs/13/app-initdb.html

postgresql@13 is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.

If you need to have postgresql@13 first in your PATH, run:
  echo 'export PATH="/usr/local/opt/postgresql@13/bin:$PATH"' >> ~/.zshrc

For compilers to find postgresql@13 you may need to set:
  export LDFLAGS="-L/usr/local/opt/postgresql@13/lib"
  export CPPFLAGS="-I/usr/local/opt/postgresql@13/include"

For pkg-config to find postgresql@13 you may need to set:
  export PKG_CONFIG_PATH="/usr/local/opt/postgresql@13/lib/pkgconfig"


To restart postgresql@13 after an upgrade:
  brew services restart postgresql@13
Or, if you don't want/need a background service you can just run:
  /usr/local/opt/postgresql@13/bin/postgres -D /usr/local/var/postgresql@13
==> Analytics
install: 8,844 (30 days), 36,310 (90 days), 50,579 (365 days)
install-on-request: 8,821 (30 days), 36,261 (90 days), 50,507 (365 days)
build-error: 1 (30 days)

postgresql@13で起動していましたが、現在Pathの通ってる14.1でもう一度チャレンジしてみようと思います。
一度、brew services stop postgresql@13 で停止するとrailsのアプリでは最初のスクショの状態です。

brew postgresql-upgrade-databaseをうちます

% brew postgresql-upgrade-database
Error: /usr/local/var/postgres.old already exists!
Remove it if you want to upgrade data automatically.

エラーになりました。postgres.oldを削除したほうがよさそうですが、
参考記事:PostgreSQL DB のアップグレードは brew postgresql-upgrade-database が便利
こちらから、リネームでもよさそうなので一旦リネームして

再度brew postgresql-upgrade-databaseを実行

Upgrade Complete
----------------
Optimizer statistics are not transferred by pg_upgrade.
Once you start the new server, consider running:
    /usr/local/opt/postgresql/bin/vacuumdb --all --analyze-in-stages

Running this script will delete the old cluster's data files:
    ./delete_old_cluster.sh
==> Upgraded postgresql data from 13 to 14!
==> Your postgresql 13 data remains at /usr/local/var/postgres.old

ログを省略しましたが、無事データ移行ができたようです。

リネームしたファイルは残っています。

/usr/local/var/
% ls
cache           log             postgres        postgres_re.old postgresql@13
homebrew        mysql           postgres.old    postgresql@12
1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?