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

Installation de PostgreSQL 9.1 et encodage de la base de données

L'option pertinente est --locale=locale à initdb commande qui initialise votre cluster de base de données. Si vous ne le fournissez pas explicitement, il utilise par défaut les paramètres régionaux du système. (Vous exécutez probablement votre Ubuntu sur la locale 'C'.)

Lisez plus d'informations à ce sujet dans l'excellent manuel ici .

Dans PostgreSQL, vous pouvez toujours se faufiler dans une base de données avec des paramètres régionaux différents en basant une nouvelle base de données sur template0 au lieu du templeate1 par défaut . Je cite le manuel ici :

Mais je préfère recréer le cluster de base de données avec les paramètres régionaux souhaités. Beaucoup plus propre.

Modifier :informations sur les paramètres régionaux disponibles

Vous ne pouvez utiliser locales fournies par le système d'exploitation. Je cite le manuel ici :

Regardez locale-gen dans un système Unix, si vous souhaitez utiliser une locale qui n'a pas encore été générée. La chose importante à comprendre est que plusieurs paramètres régionaux peuvent être installés dans votre système d'exploitation, mais un seul d'entre eux peut être choisi pour les paramètres système tels que LC_CTYPE , LC_COLLATE , etc. Regardez la sortie de locale versus locale -a dans la coquille. Habituellement, c'est le même pour tous, défini via LC_ALL .

@David :Ce que vous avez fait a peut-être résolu votre problème, mais cela aurait pu être plus simple. Sachez également que la variable d'environnement LANG ne fournit que la valeur par défaut pour tous les paramètres régionaux. Si l'un d'entre eux est défini sur quelque chose de différent, LANG sera outrepassé. Définir LC_ALL pour remplacer tout paramètre existant. Voici un de nombreux sites sur le Web pour vous en dire plus à ce sujet.

Pour vérifier tous les paramètres régionaux actuels de votre base de données (cluster), exécutez dans votre base de données :

SHOW ALL;

Ou plus précisément :

SELECT *
FROM   pg_settings
WHERE  name ~~ 'lc%';