这不是我的第一次升级。过去我从 9 升级到 10,从 10 升级到 11。我以为我上次把所有东西都写下来了,但显然没有。在版本 11 中,我的数据库位于nl_BE.utf-8
:
List of databases
Name | Owner | Encoding | Collate | Ctype |
-----------+----------+----------+-------------+-------------+
glewlwyd | glewlwyd | UTF8 | nl_BE.utf-8 | nl_BE.utf-8 |
postgres | postgres | UTF8 | nl_BE.utf-8 | nl_BE.utf-8 |
prda | postgres | UTF8 | nl_BE.utf-8 | nl_BE.utf-8 |
template0 | postgres | UTF8 | nl_BE.UTF-8 | nl_BE.UTF-8 |
template1 | postgres | UTF8 | nl_BE.utf-8 | nl_BE.utf-8 |
(5 rows)
安装后(apt-get install postgresql-12
)我修改/etc/postgresql/12/main/postgresql.conf
并更改en_US.UTF-8
为nl_BE.UTF-8
. 在以前的升级中,我将此文件复制到了我的数据目录中,但 12 似乎不喜欢这样。11 和 12 版本的端口号不同。
当我使用/usr/lib/postgresql/12/bin/initdb --locale=nl_BE.UTF-8 --pgdata=/srv/postgres/data/12
新实例创建数据库时,但数据库位于en_US.UTF-8
. /usr/lib/postgresql/12/bin/pg_upgrade -b /usr/lib/postgresql/11/bin -B /usr/lib/postgresql/12/bin -d /srv/postgres/data/11 -D /srv/postgres/data/12
没有错误的结束。
当我连接到实例时,我自己的数据库不存在。一定是因为语言环境不正确。我还更改了export LANG=nl_BE.UTF-8
shell 的语言环境 ( ),但这并没有帮助。我做错了什么?
我关注了@Colin 't Hart 的评论,这解决了问题。随着
pg_upgradecluster -v 12 11 main /srv/postgres/data/12
升级完成。我将端口更改为5432
并重新启动它。现在我的应用程序正在使用版本 12 数据库。