PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

pg_restore non ha potuto eseguire la query:ERRORE:nome locale non valido:en_US.UTF-8

La tua nuova installazione di Ubuntu non ha ancora definito la locale en_US.UTF-8. Quindi, quando stai provando a ripristinare il file dump, il file dump tenta di fare qualcosa del tipo:

CREATE DATABASE <database> WITH TEMPLATE = ... LC_COLLATE = 'en_US.UTF-8'...

Ma "en_US.UTF-8" non è definito dal tuo nuovo server Ubuntu. Innanzitutto, puoi verificare questo:

# list all "known" locales. In my case, on new Ubuntu 20, I get:
$ locale -a
C
C.UTF-8
POSIX

Modifica /etc/locale.gen esistente file, che contiene l'elenco delle possibili impostazioni locali. La maggior parte delle località verrà commentata. Questi non verranno definiti , quindi decommenta la riga con 'en_US.UTF-8'.

Esegui (come root) locale-gen.

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

Nota che ora è una lingua configurata:

$ locale -a
C
C.UTF-8
POSIX
en_US.utf8

(Sì, è minuscolo utf8 , non è un problema)

Riavvia il tuo server postgres (in modo che veda la nuova locale -- non è necessario riavviare il server Ubuntu stesso) e ripristini lo spettacolo ora funziona.