在 createdb
时,
createdb -l en_US.UTF-8 -O squirrel_admin squirrel
遇到了这样的报错:
createdb: error: database creation failed: ERROR: new collation (en_US.UTF-8) is incompatible with the collation of the template database (C.UTF-8)
HINT: Use the same collation as in the template database, or use template0 as template.
原因是 PG 内置了两个 template databases,分别叫 template1 和 template0。template1 可能是在安装 PG server 时生成的,而当时的 LC_COLLATE
是 C,导致 template1 的 collation 也是 C。PG 在 createdb 时默认会复制 template1 形成新的库,因此指定的 collation 冲突时会报错。
解决方式有两种:
- 用 template0,有两种方式:
- SQL:
CREATE DATABASE dbname TEMPLATE template0;
- CLI:
createdb -T template0 dbname
- SQL:
- 重建 template1,方法参考 这里