Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 02/11/2010 19:26:37
- unisol
- Membre
probleme encodage du cluster
Bonjour,
je viens d'installer une distribution CENTOS 5.
et installé postgresql 8.4-5.
je souhaite que mon encodage par défaut soit UTF8 avec
LC_COLLATE = 'French_France.1252'
LC_CTYPE = 'French_France.1252'
le locale par défaut de ma distrib est :
[root@s15261659 ~]# locale
LANG=C
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
etc...
si j'initialise ma base avec :
service postgresql initdb --encoding=UTF8 --locale=fr_FR.utf8 --pgdata=/var/lib/pgsql/data
je vérifie le résultat est :
show lc_ctype;
lc_ctype
----------
C
(1 row)
comment faire ? pour avoir du UTF8
j'ai un moment changé ma variable LANG avec :
LANG = fr_FR
[root@s15261659 ~]# locale
LANG=fr_FR
LC_CTYPE="fr_FR"
LC_NUMERIC="fr_FR"
LC_TIME="fr_FR"
LC_COLLATE="fr_FR"
etc...
là je me suis la partie va être bon
que neni
donc voilà, je cherche de l'aide
merci
Dernière modification par unisol (02/11/2010 19:27:07)
Hors ligne
#2 02/11/2010 19:30:17
- gleu
- Administrateur
Re : probleme encodage du cluster
À ma connaissance, "service postgresql initdb" n'accepte pas d'arguments. Il faudrait vérifier dans ce script. Une autre façon de le faire serait de lancer initdb soi-même.
Guillaume.
Hors ligne
#3 02/11/2010 20:03:54
- unisol
- Membre
Re : probleme encodage du cluster
Si si, initdb accepte bien des arguments, dailleurs, pas d'erreur pendant l'execution
Hors ligne
#4 02/11/2010 20:43:55
- Marc Cousin
- Membre
Re : probleme encodage du cluster
initdb accepte des arguments.
Mais vous n'avez pas lancé 'initdb', qui est un programme
Vous avez lancé :
'service postgresql initdb --encoding=UTF8 --locale=fr_FR.utf8 --pgdata=/var/lib/pgsql/data', qui a lancé le programme 'service', qui à son tour a lancé le script /etc/init.d/postgresql. Qui lui ne prend, à mon avis, pas d'argument. Et qui, toujours à mon avis, va ignorer vos variables d'environnement, puisqu'il fera un su - postgres dans le script, ce qui rechargera les variables.
Vous avez plutôt intérêt à positionner ces variables dans le .bash_profile ou .bashrc de l'utilisateur postgresql. Et de positionner LANG à fr_FR.utf8
Un dernier point : je doute que le collate French_France.1252 soit compatible avec de l'utf8, puisque par définition, c'est un collate pour de la codepage 1252.
Marc.
Hors ligne
#5 02/11/2010 20:44:16
- gleu
- Administrateur
Re : probleme encodage du cluster
initdb, oui. Seulement, quand vous faites "service postgresql initdb", vous exécutez le script de démarrage de PostgreSQL pour une Fedora, qui va lui-même lancer initdb. Rien ne me dit que le script va penser à fournir les arguments à initdb.
Ou autrement dit, pour être plus clair:
initdb "plein d'arguments"
n'est pas forcément la même chose que
service postgresql initdb "plein d'arguments"
Tout dépend de ce que le script /etc/init.d/postgresql fait du "plein d'arguments".
Et je n'ai malheureusement pas de Fedora sur moi pour vérifier.
Guillaume.
Hors ligne
#6 02/11/2010 20:51:12
- unisol
- Membre
Re : probleme encodage du cluster
votre analyse est fine...
question bete.
comment editer ces fichiers ?
avez vous sous la main un fragment d'exemple ?
Hors ligne
#7 02/11/2010 20:53:03
- unisol
- Membre
Re : probleme encodage du cluster
merci à gleu
en fait j'ai une CENTOS (un close d'une RED HAT)
Hors ligne
#8 02/11/2010 20:55:56
- unisol
- Membre
Hors ligne
#9 02/11/2010 21:01:03
- unisol
- Membre
Re : probleme encodage du cluster
j'ai touvé
en tapant
vi /etc/bashrc
et
vi /etc/profile
on arrive à editer les fichiers
je ne vois pas ou est la variable LANG !
Hors ligne
#10 02/11/2010 21:12:01
- Marc Cousin
- Membre
Re : probleme encodage du cluster
Non, ces fichiers sont dans le home de l'utilisateur postgres.
Faites su - postgres
Ensuite vous aurez un fichier caché (commençant par un . ) qui s'appellera .bashrc ou .bash_profile, suivant les distributions.
Marc.
Hors ligne
#11 02/11/2010 21:12:50
- Marc Cousin
- Membre
Re : probleme encodage du cluster
Par ailleurs, ce n'est pas parce qu'une variable n'est pas dans un fichier que vous ne pouvez pas l'y rajouter. Une ligne
export LANG=fr_FR.utf8
suffira dans un de ces fichiers
Marc.
Hors ligne
#12 02/11/2010 21:14:05
- unisol
- Membre
Re : probleme encodage du cluster
NON en fait c'est une erreur
les fichiers "semblent" etre edité par :
vi ~/.bash_profile
et
vi~/.bashrc
dans les deux cas pas de trace de LANG
faut il l'ajouter ?
je crois savoir que seul l'un des deux fichier est lu au démarrage ?!
puis avoir votre assistance sur ce point ?
mon linux n'est pas tres bon.
merci
Hors ligne
#13 02/11/2010 21:16:40
- Marc Cousin
- Membre
Re : probleme encodage du cluster
Si vous avez les deux, il est probable que l'un des deux charge l'autre (le .bash_profile doit avoir une ligne 'source .bashrc' ou quelque chose comme ça).
Éditez le .bash_profile, je pense que ça ira très bien. Et oui, rajoutez une ligne LANG.
par ailleurs le vi ~/.bash_profile doit être fait en tant qu'utilisateur postgres.
Marc.
Hors ligne
#14 02/11/2010 21:28:51
- unisol
- Membre
Re : probleme encodage du cluster
une fois loggé en postgres j'ai ajouté la ligne comme ceci.
faut-il redemarrer la machine
[ -f /etc/profile ] && source /etc/profile
export LANG=fr_FR.utf8
PGDATA=/var/lib/pgsql/data
export PGDATA
un locale donne
-bash-3.2$ locale
LANG=fr_FR.utf8
LC_CTYPE="fr_FR.utf8"
LC_NUMERIC="fr_FR.utf8"
LC_TIME="fr_FR.utf8"
LC_COLLATE="fr_FR.utf8"
LC_MONETARY="fr_FR.utf8"
LC_MESSAGES="fr_FR.utf8"
LC_PAPER="fr_FR.utf8"
LC_NAME="fr_FR.utf8"
LC_ADDRESS="fr_FR.utf8"
LC_TELEPHONE="fr_FR.utf8"
LC_MEASUREMENT="fr_FR.utf8"
LC_IDENTIFICATION="fr_FR.utf8"
LC_ALL=
je prévois de revenir en tant que root
de supprimer la base avec un
rm -rf /var/lib/pgsql/data/
de réinitialiser la base avec
service postgresql initdb
êtes vous daccord ?
Hors ligne
#15 02/11/2010 21:36:34
- unisol
- Membre
Re : probleme encodage du cluster
avant de répondre, je sui l'idiot de la soirée.
en revenant en root,
un locale donne
[root@s15261659 ~]# locale
LANG=C
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=
PAS BON !
mais en revenant sous le user postgres
on a :
[root@s15261659 ~]# su - postgres
-bash-3.2$ locale
LANG=fr_FR.utf8
LC_CTYPE="fr_FR.utf8"
LC_NUMERIC="fr_FR.utf8"
LC_TIME="fr_FR.utf8"
LC_COLLATE="fr_FR.utf8"
LC_MONETARY="fr_FR.utf8"
LC_MESSAGES="fr_FR.utf8"
LC_PAPER="fr_FR.utf8"
LC_NAME="fr_FR.utf8"
LC_ADDRESS="fr_FR.utf8"
LC_TELEPHONE="fr_FR.utf8"
LC_MEASUREMENT="fr_FR.utf8"
LC_IDENTIFICATION="fr_FR.utf8"
LC_ALL=
je me rend compte que chaque utilisateur a sa propore table de caractère.
que faut il faire dans ce cas ?
Hors ligne
#16 02/11/2010 22:13:08
- Marc Cousin
- Membre
Re : probleme encodage du cluster
Normalement, rien, c'est bizarre.
Je n'ai pas de centos pour tester, là, mais si votre locale pour postgres vaut cela, supprimez le cluster et recréez le directement par la commande initdb en tant que postgres. Ça devrait marcher.
Marc.
Hors ligne
#17 02/11/2010 22:30:18
- unisol
- Membre
Re : probleme encodage du cluster
voilà grace à votre aide et vos lumières
voici ce que j'ai fais pour terminer : (ça peut toujours service quelqu'un)
j'ai edité sous root : .bash_profile
vi ~/.bash_profile
puis ajouté
export LANG=fr_FR.utf8
pour initialiser le script j'ai fais un :
source ~/.bash_profile
à vérifier avec :
# locale
LANG=fr_FR.utf8
LC_CTYPE="fr_FR.utf8"
LC_NUMERIC="fr_FR.utf8"
LC_TIME="fr_FR.utf8"
LC_COLLATE="fr_FR.utf8"
LC_MONETARY="fr_FR.utf8"
on construit le cluster (sous root) et pas d'arguments cette fois puis ce que la table est bien en UTF8 :
# service postgresql initdb
BINGO !!!
on vérifie :
postgres=# show lc_ctype;
lc_ctype
------------
fr_FR.utf8
(1 row)
postgres=# show lc_collate;
lc_collate
------------
fr_FR.utf8
(1 row)
sous PGAdminIII la création de ma base est par défaut en UTF8
Merci à tous pour votre précieuse aide.
j'ai galéré des jours, mais c'est pas grave c'est un enseignement.
Hors ligne
#18 03/11/2010 09:52:19
- Marc Cousin
- Membre
Re : probleme encodage du cluster
Attention, par contre, tu n'es pas dans le collate demandé initialement : 'French_France.1252'. Je le mentionne pour être sûr que c'est bien ce que tu souhaites (tri alphabétique français, pas spécialement celui de la cp1252)
Marc.
Hors ligne
#19 03/11/2010 15:32:06
- unisol
- Membre
Re : probleme encodage du cluster
oui javais vu, je pense que l'UTF8 englobe tous les jeux de caractères (qui peut le plus peut le moins)
j'avoue pour le moment ne pas en connaitre TOUTES les conséquences.
voici la def de la base source : (
CREATE DATABASE gmao
WITH OWNER = postgres
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'French_France.1252'
LC_CTYPE = 'French_France.1252'
CONNECTION LIMIT = -1;
merci de la remarque.
question : connaissez vous un outil permettant la syncho des serveurs au niveau de leur structure ?
(dois je ouvrir une discussion à ce sujet ?)
Hors ligne
#20 03/11/2010 17:23:54
- Marc Cousin
- Membre
Re : probleme encodage du cluster
la structure de quoi ?
Marc.
Hors ligne
#21 03/11/2010 18:26:35
- gleu
- Administrateur
Re : probleme encodage du cluster
Comme ça n'a rien à voir avec la discussion en cours, oui, ce serait mieux d'ouvrir une autre discussion.
Guillaume.
Hors ligne
#22 03/11/2010 20:08:58
- unisol
- Membre
Re : probleme encodage du cluster
je vais ouvrir une discution,
ps >>> marc :
scructure des bases de données sur différents serveurs. afin qu'elle soient à l'identiques.
@+ sur un autre fil
Hors ligne
Pages : 1