psql: FATAL: database locale is incompatible with operating system DETAIL: The database was initialized with LC_COLLATE "en_US", which is not recognized by setlocale(). HINT: Recreate the database with another locale or install the missing locale.
PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[08006] [7] FATAL: database locale is incompatible with operating system\nDETAIL: The database was initialized with LC_COLLATE "en_US", which is not recognized by setlocale().\nHINT: Recreate the database with another locale or install the missing locale.' in
Os erros acima indicam existir erro entre o locale do seu sistema operacional e o PostgreSQL.
Devem existir outras soluções para este problema, mas iremos tratar de duas formas:
A primeira, quando o locale do seu sistema operacional está errado. Desta forma, será necessário que altere para o locale correto. Verifique se o problema foi resolvido.
Caso não, aplique também a solução abaixo.
A segunda, quando o locale errado é o do banco de dados, uma das formas que encontramos de solucionar foi exportar a base, efetuar sua conversão para o formato desejado e em seguida, recriar a base de dados indicando o tipo correto de locale desejado.
A conversão da exportação pode ser feito utilizando o programa iconv (Utilize somente em exportações SQL), no Linux.
Exemplo:
iconv -f=<charset_origem> -t=<charset_destino> -o=<arquivo_convertido_de_saída> <arquivo_de_entrada>
Para criar uma base de dados forçando o tipo, será necessário verificar se o comando CREATE DATABASE tem a opção ENCODING UTF8, como no exemplo abaixo:
CREATE DATABASE drall ENCODING ‘UTF8’;