sql >> Databasteknik >  >> RDS >> PostgreSQL

pg_restore kunde inte köra frågan:FEL:ogiltigt språknamn:sv_US.UTF-8

Din nya ubuntu-installation har inte definierat en_US.UTF-8-språket än. Så när du försöker återställa dumpfilen försöker dumpfilen göra något i stil med:

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

Men 'en_US.UTF-8' definieras inte av din nya ubuntu-server. Först kan du verifiera detta:

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

Redigera befintliga /etc/locale.gen fil, som innehåller listan över möjliga lokaler. De flesta lokaler kommer att kommenteras bort. Dessa kommer inte att definieras , så av-kommentera raden med 'en_US.UTF-8'.

Kör (som root) locale-gen.

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

Lägg märke till att det nu är en konfigurerad lokal:

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

(Ja, det är gemener utf8 , inte ett problem)

Starta om din postgres-server (så att den ser den nya lokalen -- du behöver inte starta om själva ubuntu-servern), och du återställer show now work.



  1. Berörda rader för ActiveRecord::Base.connection.execute med Postgres

  2. Flera MySQL-instanser på en enda maskin

  3. Hur man begränsar resultat i T-SQL

  4. Oracle distribuerade databaser och MSVC