Como eu crio bancos de dados Unicode no PostgreSQL 8.4?

14

Eu instalei o pacote postgresql-8.4 com as opções padrão. Tudo funcionou bem, mas parece que 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 confuso porque (afaik) eu não uso um modelo para criar o novo banco de dados, ou é implicitamente referir-se ao banco de dados padrão "postgres" por algum motivo?

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

    
por wildpeaks 10.01.2011 / 12:43

3 respostas

13

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

A solução mais rápida é que você crie seu banco de dados a partir de template0 , usando o createdb --template=template0 .

Você pode querer descartar e reinicializar todo o seu cluster com um local mais sensato. Você provavelmente teve seu sistema operacional configurado para usar o 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 você goste, é claro.

    
por Peter Eisentraut 10.01.2011 / 14:45
2

talvez você precise configurar o local 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
    
por user535010 21.03.2012 / 23:30
-1

Eu acho que você quer dizer:

createdb test42 --encoding utf-8

Isso deve fazer o que você quer.

    
por spennig 10.01.2011 / 21:48

Tags