Herokuの標準DBであるPostgresに接続する外部スクリプトを使っていたある日、突然、該当DBに接続できなくなり、ハマったのでメモ。
- 事象
- 外部スクリプトから、HerokuのDBに接続しようとすると「FATAL: password authentication failed for user "xxx" (PG::Error)」エラーが発生し、接続できない。
- 原因
- 答えを先に言うと、「Herokuのメンテナンスのタイミングで、DBの設定情報が変更されていた」でした。
- さらにHerokuからのメールをよくみると、ちゃんと「DBの設定情報が変更される。app側の設定は適切に変更しておくから」と書いてありました。
[Heroku Support] Maintenance is required for your database (ticket #xxxxx)
Your database HEROKU_POSTGRESQL_xxx_URL on xxx-xxx-xxx requires maintenance. During this period, your database credentials will become read-only. Once it has completed, your database URL will have changed, but we will update your app's config variables accordingly.
We expect maintenance to last just a few moments. We will update this ticket once it's complete
- 対応
- Herokuのサポート対象外(Herokuが知る由もない)外部スクリプトのDB接続情報を適切なものにupdateするだけ。
- Heroku DBの設定情報は「heroku config」コマンドで確認。こちらを参照。
原因が分かったらなんてことはないが、なかなか「メンテナンスによる設定変更」ということに気づけなかったので、残しておきます。