Blog do Regis –; Meus aprendizados

O que ando aprendendo nesta caminhada sobre a Terra

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 comentários a ;Criando base de dados no PostgreSQL com encoding diferente;

  1. Avatar de Jose
    Jose

    VOCÊ DEVE DEFINIR UM EXEMPLO DE UTF-8 PARA LATIN1

    1. Avatar de Marcos Regis
      Marcos Regis

      O processo é semelhante. Basta alterar a código de origem e o alvo.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *