PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 17/02/2012 18:56:11

baradji
Membre

comment uniformiser les variables locales

Bonjour,
mon serveur 1 est un serveur ubuntu sous lequel est installé postgresql -8.4,
et mon serveur 2redhat sous lequel est installé postgresql -9.1,
Je prepare une migation du serveur 1 vers le 2, mais j'ai une difference au niveau des variables locale,


postgres@db:/root$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_CA.UTF-8
LC_CTYPE=fr_FR.UTF-8
LC_NUMERIC="en_CA.UTF-8"
LC_TIME="en_CA.UTF-8"
LC_COLLATE=fr_FR.UTF-8
LC_MONETARY="en_CA.UTF-8"
LC_MESSAGES=fr_FR.UTF-8
LC_PAPER="en_CA.UTF-8"
LC_NAME="en_CA.UTF-8"
LC_ADDRESS="en_CA.UTF-8"
LC_TELEPHONE="en_CA.UTF-8"
LC_MEASUREMENT="en_CA.UTF-8"
LC_IDENTIFICATION="en_CA.UTF-8"
LC_ALL=


serveur 2
bash-3.2$ locale
LANG=fr_CA.UTF-8
LC_CTYPE=fr_FR.UTF-8
LC_NUMERIC="fr_CA.UTF-8"
LC_TIME="fr_CA.UTF-8"
LC_COLLATE=fr_FR.UTF-8
LC_MONETARY="fr_CA.UTF-8"
LC_MESSAGES=fr_FR.UTF-8
LC_PAPER="fr_CA.UTF-8"
LC_NAME="fr_CA.UTF-8"
LC_ADDRESS="fr_CA.UTF-8"
LC_TELEPHONE="fr_CA.UTF-8"
LC_MEASUREMENT="fr_CA.UTF-8"
LC_IDENTIFICATION="fr_CA.UTF-8"
LC_ALL=
------------------------------------------------------------------------------

mes préoccupations sont les suivantes:
1) est ce que c'est possible de modifier les valeurs du serveur 2 de sorte a avoir les mêmes valeurs que le serveur1?

2) est ce que si je crée cette collation peut résoudre le problème?
CREATE COLLATION english (
     LOCALE = 'en_US.UTF-8',
    [LC_COLLATE = 'en_US.UTF-8',
     LC_CTYPE = 'en_US.UTF-8'
)
3) les valeurs sont différends aussi dans chaque fichier postgresql.conf

Hors ligne

#2 17/02/2012 20:12:43

gleu
Administrateur

Re : comment uniformiser les variables locales

1) est ce que c'est possible de modifier les valeurs du serveur 2 de sorte a avoir les mêmes valeurs que le serveur1?

Oui, mais je n'ai jamais été très doué avec les locales, donc pas sûr du comment.

2) est ce que si je crée cette collation peut résoudre le problème?

Tout dépend du problème. Si c'est celui de la question 1, non, absolument pas.

3) les valeurs sont différends aussi dans chaque fichier postgresql.conf

À cause des locales du système. Il faut que vous trouviez le moment d'avoir les mêmes locales sur les deux serveurs


Guillaume.

Hors ligne

#3 18/02/2012 00:56:42

baradji
Membre

Re : comment uniformiser les variables locales

salut,
j'ai modifier des parametres en effectuants les commandes suivantes sur le serveur 1
[root@db1 ~]# vi ~/.bash_profile
ajout de la ligne
export LANG=en_CA.UTF-8

source ~/.bash_profile
et j'obtiens
[root@db1 ~]# locale
LANG=en_CA.UTF-8
LC_CTYPE=fr_FR.UTF-8
LC_NUMERIC="en_CA.UTF-8"
LC_TIME="en_CA.UTF-8"
LC_COLLATE=fr_FR.UTF-8
LC_MONETARY="en_CA.UTF-8"
LC_MESSAGES=fr_FR.UTF-8
LC_PAPER="en_CA.UTF-8"
LC_NAME="en_CA.UTF-8"
LC_ADDRESS="en_CA.UTF-8"
LC_TELEPHONE="en_CA.UTF-8"
LC_MEASUREMENT="en_CA.UTF-8"
LC_IDENTIFICATION="en_CA.UTF-8"
LC_ALL=

apres cela, j'ai les memes config que le serveur 1,
mais je ne peux toujours pas creer de base avec
CREATE DATABASE mabd
  WITH OWNER = tc
       ENCODING = 'UTF8'
       TABLESPACE = pg_default
       LC_COLLATE = 'en_US.UTF-8'
       LC_CTYPE = 'en_US.UTF-8'

j'ai le message
ERREUR:  le nouveau tri (en_US.UTF-8) est incompatible avec le tri de la base de
données modèle (fr_CA.UTF-8)
ASTUCE : Utilisez le même tri que celui de la base de données modèle,
ou utilisez template0 comme modèle.

sur le serveur 1, j'ai
CREATE DATABASE postgres
  WITH OWNER = postgres
       ENCODING = 'UTF8'
       TABLESPACE = pg_default
       LC_COLLATE = 'en_US.UTF-8'
       LC_CTYPE = 'en_US.UTF-8'
       CONNECTION LIMIT = -1;
-------------------
sur le serveur 2
CREATE DATABASE postgres
  WITH OWNER = postgres
       ENCODING = 'UTF8'
       TABLESPACE = pg_default
       LC_COLLATE = 'fr_CA.UTF-8'
       LC_CTYPE = 'fr_CA.UTF-8'
       CONNECTION LIMIT = -1;

comment puis-je modifier les valeurs de  LC_COLLATE et LC_CTYPE pour la bd postgres sur le serveur 2?

quick help,

Hors ligne

#4 18/02/2012 01:06:48

rjuju
Administrateur

Re : comment uniformiser les variables locales

Vous pouvez essayer en ajoutant la commande TEMPLATE = template0 comme indiqué dans le message d'erreur :

CREATE DATABASE mabd
  WITH OWNER = tc
       ENCODING = 'UTF8'
       TABLESPACE = pg_default
       LC_COLLATE = 'en_US.UTF-8'
       LC_CTYPE = 'en_US.UTF-8'
       TEMPLATE = template0

En ligne

Pied de page des forums