PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

pg_restore не можа да изпълни заявка:ГРЕШКА:невалидно име на локал:en_US.UTF-8

Новата ви инсталация на ubuntu все още не е дефинирала локала en_US.UTF-8. И така, когато се опитвате да възстановите дъмп файла, дъмп файлът се опитва да направи нещо като:

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

Но 'en_US.UTF-8' не е дефиниран от вашия нов ubuntu сървър. Първо, можете да проверите това:

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

Редактирайте съществуващия /etc/locale.gen файл, който съдържа списък с възможни локали. Повечето локали ще бъдат коментирани. Те няма да бъдат дефинирани , така че премахнете коментара от реда с 'en_US.UTF-8'.

Изпълнете (като root) locale-gen.

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

Забележете, че сега е конфигуриран локал:

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

(Да, малки букви са utf8 , не е проблем)

Рестартиране вашия postgres сървър (така че вижда новия локал -- не е необходимо да рестартирате самия сървър на ubuntu) и възстановявате шоуто сега работи.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да разбера дали Autovacuum на PostgreSQL работи на UNIX?

  2. Кръстосана таблица с голям или неопределен брой категории

  3. Как да запазите данните в докеризирана Postgres база данни с помощта на томове

  4. Създаване на последователност, чиито стойности са комбинация от знаци и числа

  5. Получете токен за достъп за връзката с PostgreSQL във функциите на Azure