Heroku 数据库在维护后显示密码验证失败

Heroku database showing password authentication failed after maintenance

所以我收到了一条来自 heroku 的消息,说它需要对我的数据库进行维护,并且只能读取一段时间。但是我去检查我的网站,发现该网站无法处理需要数据库数据的页面,我去检查日志并看到此错误消息:

2022-05-20T09:57:55.246102+00:00 app[web.1]: sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) connection to server at "eu-west-1.compute.amazonaws.com" (52.18.116.67), port 5432 failed: FATAL:  password authentication failed for user "MYUSERNAME"
2022-05-20T09:57:55.246102+00:00 app[web.1]: connection to server at ".eu-west-1.compute.amazonaws.com" (52.18.116.67), port 5432 failed: FATAL:  no pg_hba.conf entry for host "IP", user "MYUSERNAME", database "DATABASE", no encryption

我没有接触或改变任何东西,所以不确定是什么问题。

如果您没有使用 Heroku 管理的用于连接到 PostgreSQL 数据库的“动态”环境变量,就会发生这种情况

如果您只有一个,最好使用 DATABASE_URL,因为它始终具有 up-to-date 位置和凭据

Heroku 可以出于各种原因更改 url,例如凭据轮换

如果您使用的是 sqlalchemy,您可能需要一些 workaround:

os.environ.get('DATABASE_URL').replace('postgres://', 'postgresql://')