1 votes

Restauration du dump de Postgres 8.3 dans 8.4

Je dois déplacer une base de données PostgreSql de la version 8.3 de Windows à la version 8.4 fonctionnant sous Linux (Ubuntu Server 12.04).

La restauration est apparemment correcte, mais lorsque j'essaie d'afficher les données dans mon programme, je reçois une erreur indiquant que certains caractères ne sont pas pris en charge par l'encodage WIN1252.

La base de données originale a ces propriétés :

Encodage : WIN1252 LC_CTYPE : Anglais_États-Unis.1252 LC_COLLATE : English_United States.1252

Je peux restaurer la base de données en utilisant LC_CTYPE = "C" et LC_COLLATE = "C", de cette façon j'obtiens les caractères non supportés dans mon programme.

Si j'essaie de créer la base de données en utilisant cette commande :

createdb -h 127.0.0.1 \
--encoding=WIN1252 \
--lc-ctype='English_United States.1252' \
--lc-collate='English_United States.1252' \
-T template0  -U postgres mydb

Je reçois cette erreur :

createdb: falló la creación de la base de datos:
ERROR:  el nombre de configuración regional «English_United States.1252» no es válido

Tout d'abord, comment puis-je faire en sorte que mon O.S. inclue cette configuration régionale ?.

1voto

Daniel Vérité Points 2595

Le jeu de caractères Windows-1252 est connu dans Ubuntu sous son autre nom CP1252 .

En général, aucune locale correspondante n'est installée par défaut sur Ubuntu, car les adeptes d'Unix préfèrent iso-8859-15 o utf-8 .

Cependant, le charmap doit être fourni par le locales paquets. En supposant que ce paquetage est installé, vous pouvez lancer une commande comme celle-ci pour créer la locale appropriée :

sudo localedef -f CP1252 \ 
               -i /usr/share/i18n/locales/en_US \
               /usr/lib/locale/en_US.CP1252

Ensuite, exécutez sudo /etc/init.d/postgresql restart pour que postgres prenne en compte la nouvelle locale, en évitant Postgresql 9.2 "invalid locale name" sur Ubuntu 12.04 .

Ensuite, vous devriez être en mesure d'exécuter createdb comme vous l'avez fait dans la question sauf pour le nom de la locale qui est en_US.CP1252 au lieu de la version Windows English_United States.1252

0 votes

Merci Daniel, cela m'a permis de créer la base de données sans problème. Maintenant, j'ai un nouveau problème : serverfault.com/questions/542448/

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X