数据库 "postgres" 的 Postgres 从 10.4 升级到 11.5 编码不匹配:旧 "SQL_ASCII"、新 "UTF8"

Postgres upgrade from 10.4 to 11.5 encodings for database "postgres" do not match: old "SQL_ASCII", new "UTF8"

目前正在检查将 Postgres 从 10.4 升级到 11.5 的过程。

当我 运行 pg_upgrade 使用 "check" 选项时,我收到以下消息。如果您对此有任何意见,关于您如何解决这个问题,我将不胜感激。

bash-4.2$ /usr/pgsql-11/bin/pg_upgrade \
> -b /usr/pgsql-10/bin \
> -B /usr/pgsql-11/bin \
> -d /var/lib/pgsql/10/data \
> -D /var/lib/pgsql/11/data \
> -c pgsql-10/ pgsql-11/

Performing Consistency Checks on Old Live Server
------------------------------------------------
Checking cluster versions                                   
ok
Checking database user is the install user                  
ok
Checking database connection settings                       
ok
Checking for prepared transactions                          
ok
Checking for reg* data types in user tables                 
ok
Checking for contrib/isn with bigint-passing mismatch       
ok

encodings for database "postgres" do not match:  old "SQL_ASCII", new "UTF8"
Failure, exiting

当您初始化新服务器时,您需要将其设置为与旧服务器匹配。类似于其中之一:

initdb --locale C  -D /var/lib/pgsql/11/data
pg_ctl initdb -o "--locale C"  -D /var/lib/pgsql/11/data
LC_ALL=C initdb  -D /var/lib/pgsql/11/data

您需要使用与旧集群相同(可恶)的编码来创建新集群:

initdb -E SQL_ASCII --locale=C /new/data/directory

@jjanes, Laurenz Albe 谢谢你的评论,我第一次不明白,根据文件 我试图执行以下命令:#/usr/pgsql-11/bin/postgresql-11-setup initdb --locale=C -D /var/lib/pgsql/11/data
但是它在下降,然后我按照你的建议执行了命令并且验证成功:/usr/pgsql-11/bin/initdb --locale=C -D /var/lib/pgsql/11/data

-bash-4.2$ /usr/pgsql-11/bin/pg_upgrade \
> -b /usr/pgsql-10/bin \
> -B /usr/pgsql-11/bin \
> -d /var/lib/pgsql/10/data \
> -D /var/lib/pgsql/11/data \
> -c pgsql-10/ pgsql-11/
Performing Consistency Checks on Old Live Server
------------------------------------------------
Checking cluster versions                                   ok
Checking database user is the install user                  ok
Checking database connection settings                       ok
Checking for prepared transactions                          ok
Checking for reg* data types in user tables                 ok
Checking for contrib/isn with bigint-passing mismatch       ok
Checking for presence of required libraries                 ok
Checking database user is the install user                  ok
Checking for prepared transactions                          ok

*Clusters are compatible*

现在,我有第二个问题,是否可以从我的源 postgres 数据库更改编码?如果我决定只避免这种情况并继续默认使用 SQL_ASCII,它会以何种方式影响?