我在Windows 10上使用pg_restore,在Linux上使用转储文件。
我在网上搜索但我找不到答案。
[新]: 我在我的计算机上安装Ubuntu以使用pg_restore但是当我发送
时pg_restore -d mydatabase /home/user/Documents/dumpfile.dump
命令行被阻止。
有人有这个问题吗?
答案 0 :(得分:0)
您新安装的ubuntu尚未定义en_US.UTF-8语言环境。因此,当您尝试还原转储文件时,转储文件会尝试执行以下操作:
CREATE DATABASE <database> WITH TEMPLATE = ... LC_COLLATE = 'en_US.UTF-8'...
但是,新的ubuntu服务器未定义“ en_US.UTF-8”。首先,您可以验证以下内容:
# 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
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现在可以正常工作。
答案 1 :(得分:-3)
您需要对区域设置进行一些研究。起点是documentation。
Postgres依赖于操作系统来获取区域设置信息。 Posix和Windows之间的名称不同。据推测,最简单的解决方案是以某种方式更改名称。可能有办法让Windows了解Posix名称。