Comment créer des bases de données Unicode dans PostgreSQL 8.4?

14

J'ai installé le package postgresql-8.4 avec les options par défaut. Tout a bien fonctionné, mais je n'arrive pas à créer des bases de données unicode:

-- This doesn't work
createdb test1 --encoding UNICODE

-- This works
createdb test2

Le message d'erreur,

createdb: database creation failed: ERROR:  new encoding (UTF8) is incompatible with the encoding of the template database (SQL_ASCII) 

est un peu déroutant parce que (afaik) je n'utilise pas de modèle pour créer la nouvelle base de données, ou fait-il implicitement référence à la base de données par défaut "postgres" pour une raison quelconque?

Ou peut-être qu'il me manque un paramètre dans un .conffichier?

pics sauvages
la source

Réponses:

13

Le modèle template1auquel il fait référence est , qui est implicitement utilisé si vous ne spécifiez pas un autre modèle.

La solution de contournement la plus rapide consiste à créer votre base de données à la template0place à l'aide de createdb --template=template0.

Vous souhaiterez peut-être supprimer et réinitialiser l'intégralité de votre cluster avec un environnement local plus sensible. Votre système d'exploitation a probablement été configuré pour utiliser les paramètres régionaux C par défaut. Vous pouvez réinitialiser le système de base de données avec ces étapes:

sudo pg_dropcluster --stop 8.4 main
sudo pg_createcluster --locale=en_US.utf8 --start 8.4 main

Utilisez bien sûr les paramètres régionaux que vous aimez.

Peter Eisentraut
la source
Supprimer le cluster pour modifier les paramètres régionaux était exactement ce que je cherchais, merci :)
wildpeaks
Mec, après beaucoup de fouilles, c'était aussi ce que l'on cherchait! Rien d'autre ne pourrait faire fonctionner PG avec les paramètres régionaux d'Ubuntu, même en le modifiant. Mais recréer le cluster avec UTF8 a fait l'affaire :). À votre santé!
lucasarruda
Vous pouvez utiliser --locale=C.UTF-8(répertoriez les paramètres régionaux pris en charge sur votre système avec locale -a).
tricasse
3

vous devez peut-être configurer les paramètres régionaux avant de créer le cluster

export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
locale-gen en_US.UTF-8
dpkg-reconfigure locales
user535010
la source
Je pense que cela a fonctionné pour moi!
alfonx
dpkg-reconfigure nécessite sudo ...
Cerin
-1

Je pense que vous voulez dire:

createdb test42 --encoding utf-8

Cela devrait faire ce que vous voulez.

spennig
la source