Ответ 1
Из PostgreSQL документация:
Другой распространенной причиной копирования шаблона0 вместо template1 является что при копировании могут быть заданы новые параметры кодирования и локали template0, тогда как копия шаблона1 должна использовать те же настройки, что и делает. Это связано с тем, что шаблон1 может содержать специфичные для кодирования или специфичные для локали данные, в то время как template0 не известен.
Вы можете использовать только template0
для создания новой базы данных с различной кодировкой и локали:
CREATE DATABASE newdb
WITH OWNER = postgres
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'zh_CN.UTF-8'
CONNECTION LIMIT = -1
TEMPLATE template0;
Это будет работать, но это означает, что любые изменения, внесенные в template1
, не будут применены к недавно созданной базе данных.
Чтобы изменить кодировку и сортировку template1
, вы должны сначала удалить template1
, а затем создать новый шаблон template1
из template0
. Как отказаться от базы данных шаблонов описано здесь. Затем вы можете создать новую базу данных template1
с выбранной кодировкой/сопоставлением и пометить ее как шаблон, установив datistemplate=true
(пример):
update pg_database set datistemplate=true where datname='template1';