PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

pg_restore n'a pas pu exécuter la requête :ERREUR :nom de paramètre régional non valide :en_US.UTF-8

Votre nouvelle installation Ubuntu n'a pas encore défini la locale en_US.UTF-8. Ainsi, lorsque vous essayez de restaurer le fichier de vidage, le fichier de vidage tente de faire quelque chose comme :

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

Mais 'en_US.UTF-8' n'est pas défini par votre nouveau serveur Ubuntu. Tout d'abord, vous pouvez vérifier ceci :

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

Modifier /etc/locale.gen existant fichier, qui contient la liste des paramètres régionaux possibles. La plupart des paramètres régionaux seront commentés. Ces ne seront pas définis , donc, décommentez la ligne avec 'en_US.UTF-8'.

Exécutez (en tant que root) locale-gen.

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

Notez qu'il s'agit maintenant d'un paramètre régional configuré :

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

(Oui, c'est en minuscules utf8 , pas de problème)

Redémarrer votre serveur postgres (il voit donc les nouveaux paramètres régionaux - vous n'avez pas besoin de redémarrer le serveur ubuntu lui-même), et vous restaurez le show now.