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 02/12/2012 23:13:26

hypn0s
Membre

Migration PostgreSQL 8.3.14 : locale French_Switzerland.UTF8 inconnue

Bonjour,

J'essaie de migrer une base PostgreSQL (version 8.3.14) d'un ordi vers un autre, les deux étant sous XP Pro.

J'ai compris que je dois utiliser pg_dump et pg_restore, mais ce n'est pas très clair pour moi dans quel ordre doit se faire la migration, notamment quant à la création des rôles. Est-ce que ça se fait avant ou après le pg_dump / pg_restore ou est-ce que les rôles sont transférés avec ?

Dans un premier temps j'ai compilé PostgreSQL sur la nouvelle machine, avec les commandes configure, make et make install. Lors de l'étape "configure", l'option --enable-nls="fr de" a été activée.
Après l'installation, les variables d'environnement PATH, PGDATA, PGPORT ont été établies.

A présent, j'essaie de créer le cluster. A l'époque j'avais noté ces 3 commandes :

1) initdb -E=UTF8 --locale=French_Switzerland.UTF8 -U=MonDbSuperUtilisateur -w

2) pg_ctl -U=postgres start

3) CREATE ROLE w36710 WITH CREATEDB CREATEROLE NOLOGIN CONNECTION LIMIT=10 PASSWORD=monMotDePasse ENCRYPTED

La commande initdb fonctionne, mais la locale est automatiquement basculée sur French_Switzeland.1252 (Le "codepage" de Windows.) Or j'aimerais vraiment utiliser UTF8.

A l'époque, je pense que j'avais trouvé comment avoir cette locale French_Switzerland.UTF8, mais je ne parviens plus à trouver une liste des locales acceptées et comment éventuellement en rajouter.

Par ailleurs, la bonne approche est-elle de créer le cluster avec initdb, puis écraser ce qui a été fait avec pg_restore?

Ou faut-il plutôt utiliser pg_dump / pg_restore avec l'option "-C" ?

Merci beaucoup.

Hors ligne

#2 03/12/2012 00:00:31

gleu
Administrateur

Re : Migration PostgreSQL 8.3.14 : locale French_Switzerland.UTF8 inconnue

pg_dump ne sauvegarde pas les rôles. Il faut utiliser pg_dumpall pour ça, avec l'option -g.

Il faut restaurer les rôles avant d'utiliser pg_restore.

Il faut créer le cluster avec initdb (c'est d'ailleurs le seul outil qui le permet), puis restaurer avec pg_restore.

Mais pour être franc, je me demande pourquoi vous faites tout ça. Si vous migrez le serveur complet vers la même version de PostgreSQL, pourquoi ne pas tout simplement copier les fichers ? (après avoir arrêté le serveur bien sûr).

Pour les questions spécifiques Windows (sur l'encodage notamment), je ne pense pas être suffisamment compétent.


Guillaume.

Hors ligne

#3 07/12/2012 13:31:20

hypn0s
Membre

Re : Migration PostgreSQL 8.3.14 : locale French_Switzerland.UTF8 inconnue

Merci d'avoir répondu si rapidement et pour vos conseils.

Si vous migrez le serveur complet vers la même version de PostgreSQL, pourquoi ne pas tout simplement copier les fichers ? (après avoir arrêté le serveur bien sûr).

J'ai essayé de migrer mon site par "copier-coller" comme vous le suggérez. Une partie de mon site repose sur MySQL et l'autre sur PostgreSQL. Après ce copier-coller, la partie utilisant MySQL fonctionne mais pas celle utilisant PostgreSQL.

Les dossiers d'installation (y.c. chemin complet) sont les mêmes des deux côtés, y.c. pour le répertoire de PostgreSQL et celui des données.

Les variables d'environnement PGDATA, PGPORT et PATH sont également initialisées avec les mêmes chemins des deux côtés.

J'ai comparé les fichiers "http.conf" et "php.ini" avec un éditeur de code qui me signale les différences et il ne semble pas y en avoir.
Les fichiers .htaccess sont également identiques.

Mais sur le serveur de destination rien ne s'affiche.
Le code source est vide et un validateur HTML me signale l'erreur "end of document in prolog".

Avec PgAdmin III, j'arrive pourtant à voir les rôles et les tables. Tout semble correct à ce niveau.
J'imagine avoir oublié de contrôler quelque chose au niveau de la configuration du serveur, mais qu'est-ce que ça pourrait donc être?

Hors ligne

#4 07/12/2012 15:04:29

gleu
Administrateur

Re : Migration PostgreSQL 8.3.14 : locale French_Switzerland.UTF8 inconnue

Quel message d'erreur avez-vous au niveau PostgreSQL ?


Guillaume.

Hors ligne

#5 10/12/2012 15:06:27

hypn0s
Membre

Re : Migration PostgreSQL 8.3.14 : locale French_Switzerland.UTF8 inconnue

Rien. Ou plus exactement, je ne vois rien. Il y a peut-être un log PostgreSQL mais où ?

En fait, il semble que PHP n'est tout simplement pas parvenu à connecter la base, car dans les logs d'erreur d'Apache, je trouve ceci :

PHP Warning:  PHP Startup: Unable to load dynamic library '\\xampplite\\php\\ext\\php_pgsql.dll' - Cette application n'a pas pu démarrer car la configuration de l'application est incorrecte. Réinstaller l'application pourrait résoudre ce problème.\r\n in Unknown on line 0

Par contre, je ne me souviens pas d'avoir vu des erreurs au lancement avec "pg_ctl start" et par ailleurs pgAdmin III accède à la base sans problème.

Hors ligne

#6 10/12/2012 15:18:22

kenrio
Membre

Re : Migration PostgreSQL 8.3.14 : locale French_Switzerland.UTF8 inconnue

vous avez bien installé php-pgsql ? la library pgsql pour php

Hors ligne

#7 10/12/2012 18:40:33

hypn0s
Membre

Re : Migration PostgreSQL 8.3.14 : locale French_Switzerland.UTF8 inconnue

Merci. Je pense que oui.
En fait, j'ai une installation de xampplite où PostgreSQL a été rajouté par compilation. J'ai donc un dossier xampplite\pgsql. Dans le php.ini, j'ai ces deux extensions activées:
extension=php_pdo_pgsql.dll
; et
extension=php_pgsql.dll

Dans la section [PostgresSQL] du php.ini, toutes les options sont par contre en commentaires (précédées du ";").

Hors ligne

Pied de page des forums