PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment modifier le codage de la collection de base de données de modèles

À partir de la documentation PostgreSQL :

Une autre raison courante pour copier template0 au lieu de template1 est que de nouveaux paramètres d'encodage et de paramètres régionaux peuvent être spécifiés lors de la copie de template0, alors qu'une copie de template1 doit utiliser les mêmes paramètres qu'elle. En effet, template1 peut contenir des données spécifiques à l'encodage ou aux paramètres régionaux, alors que template0 est connu pour ne pas en contenir.

Vous ne pouvez utiliser que template0 pour créer une nouvelle base de données avec un encodage et des paramètres régionaux différents :

CREATE DATABASE newdb
WITH OWNER = postgres
   ENCODING = 'UTF8'
   TABLESPACE = pg_default
   LC_COLLATE = 'zh_CN.UTF-8'
   CONNECTION LIMIT = -1
   TEMPLATE template0;

Cela fonctionnera, mais cela signifie que toutes les modifications que vous avez apportées à template1 ne sera pas appliqué à la base de données nouvellement créée.

Pour modifier l'encodage et le classement de template1 vous devez d'abord supprimer template1 puis créez un nouveau modèle template1 de template0 . La procédure de suppression de la base de données de modèles est décrite ici. Ensuite, vous pouvez créer une nouvelle base de données template1 avec l'encodage/collation choisi et marquez-le comme modèle en définissant datistemplate=true (exemple) :

update pg_database set datistemplate=true  where datname='template1';