Dari dokumentasi PostgreSQL:
Alasan umum lainnya untuk menyalin template0 daripada template1 adalah bahwa penyandian baru dan pengaturan lokal dapat ditentukan saat menyalin template0, sedangkan salinan template1 harus menggunakan pengaturan yang sama. Ini karena template1 mungkin berisi data khusus enkode atau khusus lokal, sedangkan template0 diketahui tidak.
Anda hanya dapat menggunakan template0
untuk membuat database baru dengan enkode dan lokal yang berbeda:
CREATE DATABASE newdb
WITH OWNER = postgres
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'zh_CN.UTF-8'
CONNECTION LIMIT = -1
TEMPLATE template0;
Ini akan berhasil, namun itu berarti bahwa setiap perubahan yang Anda buat pada template1
tidak akan diterapkan ke database yang baru dibuat.
Untuk mengubah penyandian dan susunan template1
Anda harus terlebih dahulu menghapus template1
lalu buat template baru template1
dari template0
. Cara drop database template dijelaskan di sini. Kemudian Anda dapat membuat database baru template1
dengan penyandian/penyusunan yang dipilih dan tandai sebagai templat dengan menyetel datistemplate=true
(contoh):
update pg_database set datistemplate=true where datname='template1';