我正在使用 AWS RDS 运行 Postgres 服务器,并尝试从 9.6.11 升级到 10.15。我正在使用 aws-cli 请求升级,如下所示:
aws rds modify-db-instance
--db-instance-identifier my-database
--engine-version 10.15
--db-parameter-group-name my-pg10
--option-group-name my-pg10
--allow-major-version-upgrade
--apply-immediately
数据库从“可用”状态变为“升级”状态,然后 2-3 分钟后又恢复到“可用”状态,版本保持不变。error/pg_upgrade_precheck.log.1613891689533
日志选项卡中出现一个名为 的新文件,内容如下:
------------------------------------------------------------------
Upgrade could not be run on Sun Feb 21 07:14:49 2021
------------------------------------------------------------------
The instance could not be upgraded from 9.6.11.R1 to 10.15.R1 because of following reasons.
Please take appropriate action on databases that have usages incompatible with requested
major engine version upgrade and try again.
- The instance could not be upgraded because one or more databases do not allow connections.
Please ensure all non-template0 databases allow connections and try again.
----------------------- END OF LOG ----------------------
我尝试对另一个版本 (10.7) 进行重大升级,但同样失败。我尝试对 9.6.20 进行小升级,结果一切正常。
我被难住了。我该如何升级这个数据库?
答案1
这Postgres 文档描述数据库如何可用或不可用于连接。
事实证明,我在这个 RDS 数据库实例中隐藏了其他一些数据库。以下是我找到它们的方法:
SELECT datname, datallowconn
FROM pg_catalog.pg_database;
然后,一旦我找到它们,只需重新启用每个数据库上的连接就足够了。
ALTER DATABASE <name> allow_connections true;
完成此操作后,主要升级已成功完成。