Từ tài liệu PostgreSQL:
Một lý do phổ biến khác để sao chép template0 thay vì template1 là cài đặt mã hóa và ngôn ngữ mới có thể được chỉ định khi sao chéptemplate0, trong khi bản sao của template1 phải sử dụng các cài đặt tương tự. Điều này là do template1 có thể chứa dữ liệu dành riêng cho mã hóa hoặc dữ liệu cụ thể theo tỷ lệ, trong khi template0 được biết là không.
Bạn chỉ có thể sử dụng template0
để tạo cơ sở dữ liệu mới với mã hóa và ngôn ngữ khác nhau:
CREATE DATABASE newdb
WITH OWNER = postgres
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'zh_CN.UTF-8'
CONNECTION LIMIT = -1
TEMPLATE template0;
Điều này sẽ hoạt động, tuy nhiên, điều đó có nghĩa là bất kỳ thay đổi nào bạn đã thực hiện đối với template1
sẽ không được áp dụng cho cơ sở dữ liệu mới tạo.
Để thay đổi mã hóa và đối chiếu của template1
trước tiên bạn phải xóa template1
và sau đó tạo mẫu mới template1
từ template0
. Làm thế nào để thả cơ sở dữ liệu mẫu được mô tả ở đây. Sau đó, bạn có thể tạo cơ sở dữ liệu mới template1
với mã hóa / đối chiếu đã chọn và đánh dấu nó làm mẫu bằng cách đặt datistemplate=true
(ví dụ):
update pg_database set datistemplate=true where datname='template1';