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 04/02/2010 14:35:12

Woodruff
Membre

Probleme d'encodage lors d'une resto

Bonjour,

Lors d'une restauration d'une base de données a partir d'un DUMP ( dump crée en .tar et nommé en .backup)
Tout ce déroule bien a part pour une table et voici le message d'erreur

pg_restore: restoring data for table "histofaitlogistique"
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 3637; 0 378852 TABLE DATA histofaitlogistique
pg_restore: [archiver (db)] COPY failed: ERROR:  invalid byte sequence for encoding "UTF8": 0xa4
HINT:  This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".
CONTEXT:  COPY histofaitlogistique, line 151858

Restauration effectuée sous PgAdmin III

Si quelqu'un à une idée de ce que c'est ou comment faire pour ne pas avoir se problème?

Merci

Hors ligne

#2 04/02/2010 16:02:33

daamien
damien clochard

Re : Probleme d'encodage lors d'une resto

Apparement la base restaurée est en UTF8 tandis que la sauvegarde ne l'est pas.

Il faut refaire un dump en UTF8 ou convertir le dump actuel

Hors ligne

#3 04/02/2010 16:59:23

Woodruff
Membre

Re : Probleme d'encodage lors d'une resto

Merci, pourtant lorsque je crée la base de données je la crée en UTF8 avec un template0
Comme l'original mais sans structure, et toutes les autres données sont elles aussi en UTF8 alors pourquoi il n'y a que les données de cette table qui posent problème?
Sinon, comment convertir le dump actuel?

Hors ligne

#4 04/02/2010 17:52:09

gleu
Administrateur

Re : Probleme d'encodage lors d'une resto

Toutes les données ne sont pas en UTF-8. Sinon, vous n'auriez pas ce message là : « invalid byte sequence for encoding "UTF8": 0xa4 ».

Un petit article pour vous aider : http://blog.guillaume.lelarge.info/inde … -que-UTF-8


Guillaume.

Hors ligne

#5 04/02/2010 21:12:24

Woodruff
Membre

Re : Probleme d'encodage lors d'une resto

Pour essayer de faire simple,

Base de données postgres version 8.2.5 sur serveur linux
Utilisation de PgAdmin III sur un poste distant fonctionnant sous windows XP

Création d'une base avec template0 et en UTF8 par PgAdmin III
Insertion de données et lecture de ces même données sans anomalies (données possédant des /n je ne sais pas si ca peut jouer)

Sauvegarde de la base a partir de PgAdmin III en TAR et avec comme extension .backup sans anomalies non plus

Création d'une autre base de données par PgAdmin III avec les meme options que la précédente mais de nom diffèrent bien sur

Et le problème apparait lorsque j'importe le dump créé dans la nouvelle base.

J'espère que ma façon de procéder et plus claire ainsi, encore merci pour votre soutient

Hors ligne

#6 04/02/2010 23:51:22

gleu
Administrateur

Re : Probleme d'encodage lors d'une resto

Il doit y avoir quelque chose que je ne comprends pas. Vous créez deux fois une base, de nom différent, mais sur le même serveur, avec le même encodage et le même template. Et, à la restauration, vous avez une erreur ? ce n'est pas possible, j'ai dû mal comprendre quelque chose.


Guillaume.

Hors ligne

#7 04/02/2010 23:58:34

Woodruff
Membre

Re : Probleme d'encodage lors d'une resto

Oui, c'est des bases test, on crée une base, à un moment T on la sauvegarde, on effectue des test dessus et apres on la supprime et on la recrée en y remettant la sauvegarde

Hors ligne

#8 05/02/2010 15:24:23

daamien
damien clochard

Re : Probleme d'encodage lors d'une resto

Quel est le résultat de la requête suivante :

SELECT d.datname ,  pg_catalog.pg_encoding_to_char(d.encoding) 
FROM pg_catalog.pg_database d;

Hors ligne

#9 08/02/2010 13:10:50

Woodruff
Membre

Re : Probleme d'encodage lors d'une resto

Ça me sort un tableau avec tout en UTF8 pourtant

Le problème pourrait-il venir du fait que les développeur utilise WinDev pour forcer l'insertion de donnée, que les données soient insérées et peuvent êtres lus et même pendant la sauvegarde. Par contre, lors de la restauration, PgAdmin refuse car il ne garantie pas la cohérence des données???

Hors ligne

#10 10/02/2010 00:18:27

gleu
Administrateur

Re : Probleme d'encodage lors d'une resto

pgAdmin ne fait que lancer pg_restore suivant les options que vous lui avez fourni dans la fenêtre. L'utilisation de WinDev ne me semble pas problématique en soi.

Avez-vous lu le lien que j'ai fourni plus haut et tenter de faire ce qui y est expliqué ? si oui, qu'est-ce que cela a donné comme résultat ?


Guillaume.

Hors ligne

#11 11/02/2010 17:44:02

Woodruff
Membre

Re : Probleme d'encodage lors d'une resto

Lorsque je veux exécuter "select * from db_utf8_verify();" il me met un message d'erreur : No fonction matches the given name and argument type. You made need to add explicit type cast.

Hors ligne

#12 12/02/2010 08:19:55

Marc Cousin
Membre

Re : Probleme d'encodage lors d'une resto

Ça n'est pas une fonction de base du moteur.
Passez ce script pour la créer :

http://svana.org/kleptog/pgsql/utf8_verify.sql


Marc.

Hors ligne

#13 12/02/2010 09:37:15

gleu
Administrateur

Re : Probleme d'encodage lors d'une resto

Ou http://blog.guillaume.lelarge.info/publ … verify.sql si le précédent ne fonctionne plus.


Guillaume.

Hors ligne

Pied de page des forums