Postgres数据库具有不同的编码

时间:2011-05-10 20:37:10

标签: database postgresql encoding multiple-databases

我尝试在postgres中创建具有不同编码的数据库(我使用PgAdmin作为我的数据库管理器),但是当我尝试使用非UTF8编码创建数据库时,PgAdmin向我显示错误,说我无法创建数据库,因为它与我当前的语言环境“Portuguese_Brazil_1252”不匹配,并且LC_Ctype配置需要编码“WIN1252”。

如何在PostGres中配置?我正在使用Windows XP(不是我选择)的区域设置测试服务器下运行它。是否可以创建具有不同编码的数据库或该行为是PostGres限制?这里的任何人都已经成功管理了这个吗?

由于

1 个答案:

答案 0 :(得分:8)

来自docs

  

指定的字符集编码   对于新数据库必须是   与所选区域设置兼容   设置(LC_COLLATE和LC_CTYPE)。如果   语言环境是C(或等效地)   POSIX),然后所有编码都是   允许,但对于其他区域设置   只有一种编码会   好好工作。 [...]

     

编码和区域设置必须   匹配模板数据库的那些,   除了使用template0作为   模板。

您应该可以使用(或两者)创建数据库:

  • 指定template0作为模板(而不是默认模板1)

  • 指定正确的LC_COLLATE(尝试使用LC_COLLATE ='C')

  • 指定正确的LC_CTYPE =(尝试使用LC_CTYPE ='C')

您应该将这些设置添加到CREATE语句中(PgAdmin允许您从主窗体窗口中执行此操作)

如果您不了解template0 / template1并想知道read here