6

我在 Windows 10 上使用 pg_restore 和在 Linux 上制作的转储文件。

我收到这个错误

我在网上搜索,但没有找到答案。

[新]:我在我的计算机上安装 Ubuntu 以使用 pg_restore 但是当我发送

pg_restore -d mydatabase /home/user/Documents/dumpfile.dump

命令行被阻止。

有人有这个问题吗?

4

2 回答 2

3

您的新 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 服务器本身),然后您恢复 show now 工作。

于 2020-12-07T18:03:25.937 回答
-4

您将需要对语言环境进行一些研究。开始的地方是文档

Postgres 依赖于操作系统来获取区域信息。Posix 和 Windows 的名称不同。据推测,最简单的解决方案是以某种方式更改名称。可能有一种方法可以让 Windows 理解 Posix 名称。

于 2017-02-04T14:05:21.100 回答