如何在 PostgreSQL 8.4 中创建 Unicode 数据库?

wil*_*aks 14 postgresql

我使用默认选项安装了postgresql-8.4包。一切正常,但是我似乎无法创建 unicode 数据库:

-- This doesn't work
createdb test1 --encoding UNICODE

-- This works
createdb test2
Run Code Online (Sandbox Code Playgroud)

错误信息,

createdb: database creation failed: ERROR:  new encoding (UTF8) is incompatible with the encoding of the template database (SQL_ASCII) 
Run Code Online (Sandbox Code Playgroud)

有点令人费解,因为(afaik)我没有使用模板来创建新的数据库,还是出于某种原因隐式地引用了默认的“postgres”数据库?

或者我可能缺少.conf文件中的设置?

小智 13

它所指的模板是template1,如果您不指定另一个模板,则会隐式使用它。

最快的解决方法是template0使用createdb --template=template0.

您可能希望删除并使用更合理的语言环境重新初始化整个集群。您可能已将操作系统设置为默认使用 C 语言环境。您可以通过以下步骤重新初始化数据库系统:

sudo pg_dropcluster --stop 8.4 main
sudo pg_createcluster --locale=en_US.utf8 --start 8.4 main
Run Code Online (Sandbox Code Playgroud)

当然,使用您喜欢的任何语言环境。