Como mudar de C
para utf8
?
Eu tentei isso, mas parece que não é permitido.
postgres=# ALTER DATABASE mydb SET "Collate" To 'en_US.UTF-8';
ERROR: unrecognized configuration parameter "Collate"
Como mudar de C
para utf8
?
Eu tentei isso, mas parece que não é permitido.
postgres=# ALTER DATABASE mydb SET "Collate" To 'en_US.UTF-8';
ERROR: unrecognized configuration parameter "Collate"
Não, isso não é possível.
A razão é que pode haver estruturas de dados no banco de dados que dependem do agrupamento do banco de dados: índices sobre tipos de dados de string. Se você pudesse alterar o agrupamento em tempo real, todos esses índices seriam corrompidos implicitamente.
Você pode dizer que está tudo bem, vamos apenas reconstruir todos esses índices. Bem, se você estiver pronto para fazer isso, existe uma maneira:
pg_dump
no banco de dados, crie um novo banco de dados com o agrupamento desejado e restaure o dump no novo banco de dados. Claro, isso levará mais tempo do que apenas reconstruir os índices de string, mas a despesa está na mesma ordem de magnitude, e essa é uma maneira segura.Você pode ficar tentado a mexer no
pg_database
catálogo do sistema manualmente, mas só posso desencorajar isso: como diz o ditado, se você fizer isso e as coisas quebrarem, você poderá manter as duas peças.