通过macOS + Homebrew + Postgres解决连接错误「PG::ConnectionBad: 〜”/tmp/.s.PGSQL.5432″?」
2022年10月19日补充
在使用Homebrew安装时,postmaster.pid的路径发生了变化。
通过删除该文件可以解决这个问题。
cd /opt/homebrew/var/postgres
rm postmaster.pid
环境
-
- macOS Mojave 10.14.4
-
- postgres (PostgreSQL) 11.2
brew install postgresqlしています
$ psql -l
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"?
$ rm /usr/local/var/postgres/postmaster.pid
$ brew services start postgresql
$ brew services stop postgresql
$ brew services restart postgresql
$ brew postgresql-upgrade-database
我本以为在这里能解决的事情?,可是?。
仍然不行→请确认postgres的日志
当执行以下命令时,我注意到了显示的日志。由于Postgres使用的目录空间不足,导致服务无法启动的行为发生了。
$ postgres -D /usr/local/var/postgres
// TODO: ここでエラーになっているメッセージに従う
请按以下步骤逐个解决已创建的目录(根据环境可能不同,请同时运行postgres -D /usr/local/var/postgres命令)。
mkdir /usr/local/var/postgres/pg_replslot
mkdir /usr/local/var/postgres/pg_twophase
mkdir /usr/local/var/postgres/pg_stat
mkdir /usr/local/var/postgres/pg_tblspc
mkdir /usr/local/var/postgres/pg_commit_ts
mkdir /usr/local/var/postgres/pg_logical
mkdir /usr/local/var/postgres/pg_logical/snapshots
mkdir /usr/local/var/postgres/pg_logical/mappings
补充:2020/01/09 找不到libicui18n.61.dylib
在日志中,出现了找不到libicui18n.61.dylib的错误。
dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.61.dylib
Referenced from: /usr/local/bin/postgres
Reason: image not found
通过参考Qiita上的相关文章,通过更新homebrew来解决执行PHP -v时出现的”dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.61.dylib”错误。
brew update && brew upgrade
补充说明:2020/03/12 数据库版本不同
在将版本从10升级到11时,仍可能遇到这个错误。
$ postgres -D /usr/local/var/postgres
FATAL: database files are incompatible with server
DETAIL: The data directory was initialized by PostgreSQL version 11, which is not compatible with this version 12.2.
根据这篇文章的内容,它提到如果运行”brew info postgresql”,将显示数据库升级命令。我试着运行了一下,结果很成功。
$ brew postgresql-upgrade-database
・・・(省略)
==> Upgraded postgresql data from 11 to 12!
==> Your postgresql 11 data remains at /usr/local/var/postgres.old
==> Successfully started `postgresql` (label: homebrew.mxcl.postgresql)