sql >> Database >  >> RDS >> PostgreSQL

pg_restore kon query niet uitvoeren:ERROR:ongeldige locale-naam:en_US.UTF-8

Uw nieuwe ubuntu-installatie heeft de landinstelling en_US.UTF-8 nog niet gedefinieerd. Dus, wanneer je het dumpbestand probeert te herstellen, probeert het dumpbestand iets te doen als:

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

Maar 'en_US.UTF-8' wordt niet gedefinieerd door uw nieuwe ubuntu-server. Ten eerste kunt u dit verifiëren:

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

Bewerk bestaande /etc/locale.gen bestand, dat de lijst met mogelijke landinstellingen bevat. De meeste locaties zullen worden becommentarieerd. Deze worden niet gedefinieerd , dus verwijder commentaar op de regel met 'en_US.UTF-8'.

Voer (als root) locale-gen uit.

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

Merk op dat het nu een geconfigureerde landinstelling is:

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

(Ja, het is een kleine letter utf8 , geen probleem)

Herstarten uw postgres-server (zodat deze de nieuwe landinstelling ziet - u hoeft de ubuntu-server zelf niet opnieuw op te starten), en u herstelt show now work.



  1. Hoe kleine letters naar hoofdletters te converteren in MySQL

  2. MySQL View controleren of gegevens NULL zijn

  3. Kan de waarde die ik wilde selecteren niet ophalen met behulp van Opgeslagen procedure

  4. EF6 MySQL StrongTypingException wanneer kolom niet PK is