Como crio bancos de dados Unicode no PostgreSQL 8.4?

14

Eu instalei o pacote postgresql-8.4 com opções padrão. Tudo funcionou bem, no entanto, não consigo criar bancos de dados unicode:

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

-- This works
createdb test2

A mensagem de erro

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

é um pouco intrigante porque (afaik) eu não uso um modelo para criar o novo banco de dados ou está implicitamente se referindo ao banco de dados "postgres" padrão por algum motivo?

Ou talvez esteja faltando uma configuração em um .confarquivo?

picos selvagens
fonte

Respostas:

13

O modelo ao qual está se referindo é template1, que é implicitamente usado se você não especificar outro modelo.

A solução mais rápida é a criação de seu banco de dados template0, usando o createdb --template=template0.

Você pode descartar e reinicializar todo o cluster com um código de idioma mais sensato. Você provavelmente teve seu sistema operacional configurado para usar o código de idioma C por padrão. Você pode reinicializar o sistema de banco de dados com estas etapas:

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

Use qualquer local que desejar, é claro.

Peter Eisentraut
fonte
Soltando o cluster para modificar o local foi exatamente o que eu estava procurando, graças :)
wildpeaks
Cara, depois de muita pesquisa, era isso que a gente procurava também! Nada mais poderia fazer o PG trabalhar com o locale do Ubuntu, mesmo mudando. Mas recriar o cluster com UTF8 fez o truque :). Felicidades!
Lucasarruda
Você pode usar --locale=C.UTF-8(liste os locais suportados no seu sistema locale -a).
Tricasse
3

talvez você precise configurar o código do idioma antes para criar o 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
fonte
Eu acho que funcionou para mim!
Alfonx
dpkg-reconfigure requer sudo ...
Cerin
-1

Eu acho que você quer dizer:

createdb test42 --encoding utf-8

Isso deve fazer o que você quiser.

spennig
fonte