Изменение кодировки шаблонов PostgreSQL в UTF8

17 Dec 2016 | Автор: anchous |

В процессе установки 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

После чего скрипт перестает дурить

VN:F [1.9.21_1169]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.21_1169]
Rating: 0 (from 0 votes)

Теги:

Ваш отзыв