Обновление Postgres с 10,4 до 11,5 кодировки для базы данных «postgres» не совпадают: старый «SQL_ASCII», новый «UTF8» - PullRequest
0 голосов
/ 23 октября 2019

В настоящее время проверяется процедура обновления 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

Ответы [ 3 ]

1 голос
/ 23 октября 2019

Когда вы инициализируете новый сервер, вам нужно настроить его так, чтобы он соответствовал старому. Примерно так:

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
0 голосов
/ 24 октября 2019

@ 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 по умолчанию?

0 голосов
/ 23 октября 2019

Вам необходимо создать новый кластер с той же (отвратительной) кодировкой, что и старый:

initdb -E SQL_ASCII --locale=C /new/data/directory
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...