Linux 如何设置PostgreSQL数据库的编码?

Linux 如何设置PostgreSQL数据库的编码?,linux,postgresql,encoding,Linux,Postgresql,Encoding,在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

在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_类型'ru_ru.WIN1251'
,但没有帮助。

怎么了?

这可能是这样的:

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
db只有在具有相同编码的情况下才会被接受为模板,这在上下文中是不可能的。大概是在
UTF-8

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

  • 如上面的命令所述,使用
    template0
    创建数据库,然后在其中播放postgis初始化脚本
  • win1251
    编码中重新创建
    postgistemplate
    数据库,假设它受postgis支持
  • 就我个人而言,我会尝试解决UTF-8的问题,因为UTF-8首先导致您尝试不同的编码,然后继续使用这种编码