数据库 "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,它会以何种方式影响?
目前正在检查将 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,它会以何种方式影响?