PostgreSQL

Como criar uma base de dados UTF8 em um servidor em LATIN1 ou como criar uma base de dados LATIN1 em um servidor em UTF8?

O PostgreSQL tem dessas coisas. Ele não permite que se crie Bases de Dados com Encoding diferentes em um mesmo template.
Hoje tentei criar uma nova base de dados em UTF8 e me deparei com o seguinte:

bash-4.1$ psql
psql (9.3.5)
Digite "help" para ajuda.

postgres=# CREATE DATABASE teste WITH ENCODING='UTF8';
ERRO:  codificação "UTF8" não corresponde a configuração regional "pt_BR.iso88591"
DETALHE:  A definição de LC_TYPE escolhida requer codificação "LATIN1".
postgres=#

Isso acontece porque o locale do S.O. está em latin1 e quando foi instalado o PostgreSQL ele absorve esta configuração.
Quando tentei instalar em um encoding diferente do padrão definido ele reclamou por não estar de acordo com o template padrão que é o template1.

Para conseguir criar uma base em um encoding diferente é necessário utilizar um outro template e no meu caso utilizei o template0.

postgres=# CREATE DATABASE posts WITH ENCODING='UTF8' LC_COLLATE='en_US.utf8' LC_CTYPE='en_US.utf8' TEMPLATE=template0;
CREATE DATABASE
postgres=#

O mesmo pode ser feito quando o locale do sistema está em UTF8 e se deseja criar uma base em LATIN1.

Espero ter ajudado.

2 responses to ;Criando base de dados no PostgreSQL com encoding diferente;

  1. JOSE Avatar
    JOSE

    DEBERIAS DE PONER UN EJEMPLO DE UTF8 A LATIN1

    1. Marcos Regis Avatar
      Marcos Regis

      El proceso es similar. Sólo tiene que cambiar la codificación de origen y la de destino.

Lascia una risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *