エラー発生前の操作や設定など
昔出したエラーを元に記事を書こうと、psql --version
を実行したらエラーになった。
エラー内容
dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib Referenced from: /usr/local/Cellar/postgresql/11.4/lib/libpq.5.11.dylib Reason: image not found Abort trap: 6
参考サイト
1. 前にエラーになったときにお世話になったサイト
unot13.hatenablog.com
↑
ありがとうございます! 参考になりました 😌
brew info
めっちゃ、分かりやすいです!
2. 新たなエラーでお世話になったサイト
原因
brewが古かった。
【補足】
PostgreSQLのバージョンアップを久しぶりにしたので、 手順に戸惑って試行錯誤したので下記解決手順は実際に行っていないので、 コマンド実行時のログは一部省略する。 次回のupgradeで、実際に下記解決手順を実施して正確な手順+ログを更新する。 (R02.05.11追記) 実際に実施した手順を再検証したので、実施できないが修正しておく。 まずい部分は、次回、upgrade時に修正する。
作業環境
$ sw_vers ProductName: Mac OS X ProductVersion: 10.15.4
PostgreSQL Version: 10 -> 12
(仮)解決手順
【準備】
・DBのバックアップは、忘れずに取っておいてください。
1. brewでインストールしたPosgreSQLの情報を確認する。
$ brew info postgresql postgresql: stable 12.2 (bottled), HEAD Object-relational database system https://www.postgresql.org/ /usr/local/Cellar/postgresql/11.4 (3,188 files, 35.4MB) * Poured from bottle on 2019-07-21 at 11:28:38 From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/postgresql.rb ==> Dependencies Build: pkg-config ✘ Required: icu4c ✘, krb5 ✘, openssl@1.1 ✔, readline ✔
※↑Dependenciesのicu4c
とkrb5
ビルドエラーになっている。
2. 1.「✘」のパッケージをそれぞれupgradeする。
(例) icu4c の場合
$ brew upgrade icu4c Updating Homebrew... ==> Auto-updated Homebrew! Updated 2 taps (homebrew/core and homebrew/cask). ==> New Formulae code-server ghc@8.8 openstackclient xxh ...(以下、省略)...
3. 再度 'brew info postgresql' を 実行してエラーが無いか確認する。
$ brew info postgresql postgresql: stable 12.2 (bottled), HEAD Object-relational database system https://www.postgresql.org/ /usr/local/Cellar/postgresql/12.2_1 (3,218 files, 37.8MB) * Poured from bottle on 2020-05-07 at 15:35:44 From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/postgresql.rb ==> Dependencies Build: pkg-config ✔ Required: icu4c ✔, krb5 ✔, openssl@1.1 ✔, readline ✔ ...(以下、省略)...
pkg-config、ビルドOKでございます👍
4. brewでPostgreSQLをupgradeする。
brew postgresql-upgrade-database
5. PostgreSQLのバージョンを確認する。
$ psql --version psql (PostgreSQL) 12.2
6. PostgreSQLの起動確認
※詳しくは参考サイト1参照。
データベースの起動
$ brew services start postgresql ==> Successfully started `postgresql` (label: homebrew.mxcl.postgresql)
または、
pg_ctl -D /usr/local/var/postgres start
環境変数を設定している場合は、
$ pg_ctl start waiting for server to start....2020-05-07 19:43:22.466 JST [19213] LOG: starting PostgreSQL 12.2 on x86_64-apple-darwin19.4.0, compiled by Apple clang version 11.0.3 (clang-1103.0.32.59), 64-bit 2020-05-07 19:43:22.467 JST [19213] LOG: listening on IPv6 address "::1", port 5432 2020-05-07 19:43:22.467 JST [19213] LOG: listening on IPv4 address "127.0.0.1", port 5432 2020-05-07 19:43:22.470 JST [19213] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432" 2020-05-07 19:43:22.492 JST [19214] LOG: database system was shut down at 2020-05-07 19:43:17 JST 2020-05-07 19:43:22.499 JST [19213] LOG: database system is ready to accept connections done server started
データベースの一覧を表示する。
$ psql -l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+-------------+----------+---------+-------+----------------------------- postgres | [user_name] | UTF8 | C | C | template0 | [user_name] | UTF8 | C | C | =c/[user_name] + | | | | | naitoukazue=CTc/[user_name] template1 | [user_name] | UTF8 | C | C | =c/[user_name] + | | | | | [user_name]=CTc/[user_name] (3 rows)
(おまけ)データベースの停止
$ brew services stop postgresql ==> Successfully started `postgresql` (label: homebrew.mxcl.postgresql)
または、
pg_ctl -D /usr/local/var/postgres stop
環境変数を設定している場合は、
$ pg_ctl stop
バックアップ
令和2年5月8日の最初に投稿した(仮)解決手順1〜6書き直すため、
とりあえず、バックアップとして封印しておく。
1. brewでインストールしたPosgreSQLの情報を確認する。
$ brew info postgresql postgresql: stable 12.2 (bottled), HEAD Object-relational database system https://www.postgresql.org/ /usr/local/Cellar/postgresql/11.4 (3,188 files, 35.4MB) * Poured from bottle on 2019-07-21 at 11:28:38 From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/postgresql.rb ==> Dependencies Build: pkg-config ✘ Required: icu4c ✘, krb5 ✘, openssl@1.1 ✔, readline ✔
※↑Dependenciesのicu4c
とkrb5
ビルドエラーになっている。
2. brewをupgradeする。
$ brew upgrade Updating Homebrew... ==> Auto-updated Homebrew! Updated 4 taps (heroku/brew, homebrew/core, homebrew/cask and homebrew/services). ==> New Formulae duktape guile@2 kamel openfast redo vlmcsd ==> Updated Formulae gradle ✔ gsoap pueue ...(以下、省略)...
3. 上記2. 実行時に何かと注意されるので、それを解決する。
(例)
Removing: /usr/local/Cellar/node/12.8.0... (4,649 files, 53.7MB) Error: Could not remove node keg! Do so manually: sudo rm -rf /usr/local/Cellar/node/12.8.0
keg
がよく分からないが、'/usr/local/Cellar/node/12.8.0を削除しろ!'
とのことなので、とりあえず、中身を確認してみる。
$ ls -l /usr/local/Cellar/node total 0 drwxr-xr-x 7 [user_name] staff 224 5 7 15:45 12.8.0 drwxr-xr-x 14 [user_name] staff 448 5 7 15:43 14.1.0
なるほど。。。バージョン違いで2個ある。
古い方が邪魔な訳か。
$ sudo rm -rf /usr/local/Cellar/node/12.8.0 $ $ ls -l /usr/local/Cellar/node total 0 drwxr-xr-x 14 [user_name] staff 448 5 7 15:43 14.1.0
再度、実行!
$ brew upgrade
。。。と、こんな感じでErrorを潰していきます。
4. 3. の作業でエラーが無くなったら、再度 'brew info postgresql' を 実行してエラーが無いか確認する。
$ brew info postgresql postgresql: stable 12.2 (bottled), HEAD Object-relational database system https://www.postgresql.org/ /usr/local/Cellar/postgresql/12.2_1 (3,218 files, 37.8MB) * Poured from bottle on 2020-05-07 at 15:35:44 From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/postgresql.rb ==> Dependencies Build: pkg-config ✔ Required: icu4c ✔, krb5 ✔, openssl@1.1 ✔, readline ✔ ...(以下、省略)...
5. brewでPostgreSQLをupgradeする。
`brew postgresql-upgrade-database'
【補足】
もし、brew upgrade
でPostgreSQLがupgradeされていたら、
下記のエラーメッセージになるかも。(しっかりupgradeされています)
$ brew postgresql-upgrade-database Error: postgresql data already upgraded!