PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

pg_restore não pôde executar a consulta:ERRO:nome de localidade inválido:en_US.UTF-8


Sua nova instalação do Ubuntu ainda não definiu a localidade en_US.UTF-8. Então, quando você está tentando restaurar o dumpfile, o dumpfile tenta fazer algo como:
CREATE DATABASE <database> WITH TEMPLATE = ... LC_COLLATE = 'en_US.UTF-8'...

Mas, 'en_US.UTF-8' não é definido pelo seu novo servidor Ubuntu. Primeiro, você pode verificar isso:
# list all "known" locales. In my case, on new Ubuntu 20, I get:
$ locale -a
C
C.UTF-8
POSIX

Editar /etc/locale.gen existente arquivo, que contém a lista de localidades possíveis. A maioria das localidades será comentada. Estes não serão definidos , portanto, descomente a linha com 'en_US.UTF-8'.

Execute (como root) locale-gen.
root# locale-gen
Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.

Observe que agora é uma localidade configurada:
$ locale -a
C
C.UTF-8
POSIX
en_US.utf8

(Sim, é minúscula utf8 , não é um problema)

Reiniciar seu servidor postgres (para que ele veja o novo locale - você não precisa reiniciar o próprio servidor ubuntu) e você restaura show now work.