Изменение кодировки шаблонов PostgreSQL в UTF8
17 Dec 2016 | Автор: dd |В процессе установки Spacewalk, работа автоскрипта создания баз данных PostgreSQL, вывалилась в ошибку, которая в логах отметилась как
createdb: database creation failed: ERROR: new encoding (UTF8) is incompatible with the encoding of the template database (SQL_ASCII)
HINT: Use the same encoding as in the template database, or use template0 as template.
Проблема заключается в том, что скрипт пытается создать новую базу в формате кодировки UTF8, копируя её из шаблона дефолтной базы template1 или template0, которые в свою очередь имеют две локали LC_CTYPE и LC_COLLATE, которые и нужно образумить, загнав в UTF8.
Делается это из SQL консоли PostgreSQL куда мы попадаем следующим образом:
# sudo -u postgres psql
пересоздаем шаблон template1 в формате UTF8 из template0
update pg_database set datallowconn = TRUE where datname = 'template0';
update pg_database set datistemplate = FALSE where datname = 'template1';
drop database template1;
create database template1 with encoding = 'UTF-8' lc_collate = 'en_US.UTF8' lc_ctype = 'en_US.UTF8' template = template0;
update pg_database set datistemplate = TRUE where datname = 'template1';
update pg_database set datallowconn = FALSE where datname = 'template0';
/q
После чего скрипт перестает дурить
Изменение кодировки шаблонов PostgreSQL в UTF8,Теги: PostgreSQL