0

我在 Linux Mint 上的 PostgreSQL 9.1 中看不到西里尔符号。所以我想用西里尔编码创建新的 bd。我说:

CREATE DATABASE ekb_1 ENCODING 'CP1251' TEMPLATE postgistemplate;

但得到错误:

postgres=# CREATE DATABASE ekb_1 ENCODING 'WIN1251' TEMPLATE postgistemplate;
ERROR:  encoding WIN1251 does not match locale ru_RU.UTF-8
ПОДРОБНОСТИ:  The chosen LC_CTYPE setting requires encoding UTF8.

我尝试添加lc_type 'ru_RU.WIN1251'但没有帮助。
怎么了?

4

1 回答 1

2

这可以像这样工作:

CREATE DATABASE dbname ENCODING 'win1251'
   lc_ctype='ru_RU.CP1251'
   lc_collate='ru_RU.CP1251'
  TEMPLATE template0;

如果ru_RU.CP1251语言环境不存在,请使用sudo locale-gen ru_RU.CP1251(Ubuntu 风格,我假设 Mint 在这方面类似)创建它并重新启动 postgres(它不会动态选择新的语言环境,并且错误消息令人困惑)。

只有当postgistemplate它具有相同的编码时,数据库才会被接受为模板,这在上下文中不太可能。估计是在UTF-8

在这种情况下,理论上有两种选择,不确定是否实用:

  1. 使用上面命令中提到的创建数据库template0,然后在其中播放 postgis 初始化脚本。
  2. 假设 postgis 支持,以编码重新创建postgistemplate数据库。win1251

就个人而言,我会尝试解决 UTF-8 的问题,这些问题导致您首先尝试不同的编码,并坚持使用该编码。

于 2013-07-11T15:17:22.650 回答