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 11/02/2010 18:10:06

oktober31
Membre

Pb de local nouvelle base de donnée

Bonjour,

Je cherche à créer une base de données avec pour locales : fr_FR.UTF-8

Pour cela, j'ai changé les variables d'environnement système qui sont en fr_FR.UTF-8
Les variables du fichier postgresql.conf sont en fr_FR.UTF-8
Je crée une nouvelle base en ayant lancé la commande initdb --locale='fr_FR.UTF-8'

Pourtant, lorsque je crée une nouvelle base, elle se crée en en_US.UTF-8


Où puis-je trouvé l'endroit qui m'empêche de créer ma base avec les bonnes valeurs ? Que dois-je faire d'autre ?

Ma version POSTGRE est 8.1.18 sur CENTOS 5.


Merci.

Hors ligne

#2 11/02/2010 19:50:49

gleu
Administrateur

Re : Pb de local nouvelle base de donnée

initdb ne permet pas de créer une base. Ça permet de créer une instance. Quels sont les messages qui apparaissent suite au lancement de la commande initdb ?


Guillaume.

Hors ligne

#3 12/02/2010 09:29:00

oktober31
Membre

Re : Pb de local nouvelle base de donnée

La réponse à mon initdb est :

initdb : aucun répertoire de données indiqué
Vous devez identifier le répertoire où résideront les données pour ce
système de bases de données. Faites-le soit avec l'option -D soit en
initialisant la variable d'environnement PGDATA.

Quand à la création de la base, je tente simplement  createdb ma_base.

Hors ligne

#4 12/02/2010 09:34:38

gleu
Administrateur

Re : Pb de local nouvelle base de donnée

Donc vous faites des createdb et pas des initdb.

En 8.1, il n'est pas possible d'indiquer la locale de la base, ce sera toujours celle utilisée lors du initdb. Il faudrait passer en 8.4 pour pouvoir le faire.


Guillaume.

Hors ligne

#5 12/02/2010 09:34:50

SAS
Membre

Re : Pb de local nouvelle base de donnée

Bonjour,

initdb --help vous indiquera les options à passer à la commande.

Pour préciser le répertoire de base : -D /path/vers/mon/repertoire

Comme l'indiquait Guillaume, initdb permet de crééer l'instance (aussi appelé cluster), soit le répertoire de stockage, avec les bases , procédures, langages... par défaut.

Une fois le cluster créé, avec l'encodage fr_FR.UTF-8, vous pourrez créer des bases de données.


Stéphane Schildknecht
Conseil, formations et support PostgreSQL
http://www.loxodata.com

Hors ligne

#6 12/02/2010 11:19:57

oktober31
Membre

Re : Pb de local nouvelle base de donnée

Je vous remercie pour vos informations.

Je vais poser mon problème dans sa globalité.

J'ai une base de donnée existante, en production, avec des données, crée dans le cluster par défaut en 'en_US.UTF-8'. Nous n'avions pas utilisé à ce jour, un certain nombre d'options du logiciel utilisant cette base. Après de multiples tentatives infructueuses de modifier ou de créer de nouvelles bases, je me suis dis que le mieux serait de sauvegarder les données et de créer une nouvelle base dans un nouveau cluster afin d'injecter les données dans cette nouvelle base.

Est-ce que cette solution vous paraît sensée ?
Est-il possible de transférer les données d'une base à une autre avec l'une ou l'autre instruction SQL ?

Hors ligne

#7 12/02/2010 12:42:39

gleu
Administrateur

Re : Pb de local nouvelle base de donnée

Après de multiples tentatives infructueuses de modifier ou de créer de nouvelles bases...

Pourquoi infructueuse ?

Est-il possible de transférer les données d'une base à une autre avec l'une ou l'autre instruction SQL ?

Non. Il faut utiliser pg_dump et soit psql soit pg_restore (la sélection dépendant du format de sauvegarde).


Guillaume.

Hors ligne

#8 12/02/2010 13:23:10

oktober31
Membre

Re : Pb de local nouvelle base de donnée

Elles ont été infructueuse dans le sens où elles se trouvent dans le cluster en 'en_US.UTF-8'. Or, pour progresser, il me faut absolument un cluster en 'fr_FR.UTF-8'.

Celui-ci est créé à présent. Mais je n'arrive pas à y créer une nouvelle base. Je suppose qu'il faut modifier PGDATA, est ce exact ? Mais cela aura-t-il un impact sur les autres bases ? Seront-elles encore accessible en attendant que la nouvelle base soit opérationnelle ? J'ai tenté un postgres -D /usr/local/pgsql/data2, sans en connaître réellement l'impact. Avec l'utilisateur POSTGRE, je suis arrivé sur une invite sans trop savoir que faire.

En tous les cas, j'ai un nouveau cluster, j'ai sauvegardé ma base en US. Il me faut à présent la restaurer en FR et peut être changer le cluster utilisé par mon logiciel.

Je patauge un peu... beaucoup. Mais j'ai la sensation de progresser.

Hors ligne

#9 12/02/2010 19:05:36

gleu
Administrateur

Re : Pb de local nouvelle base de donnée

Le initdb permet de créer une instance. On peut exécuter plusieurs instances sur un même serveur, mais il faut avoir un port différent pour chaque.

Donc, initdb pour créer une nouvelle instance, modifier le postgresql.conf de cette instance pour indiquer un autre numéro de port, exécuter PostgreSQL avec cette instance, créer une base avec createdb pour s'assurer que la bonne locale est utilisée.

Et ça, ce n'est que le début. Ensuite, il faudra basculer les données de la première instance vers la seconde.


Guillaume.

Hors ligne

Pied de page des forums