为 postgres 设置 initdb 编码

set initdb encoding for postgres

当我尝试使用 init[db] 调用 pg_ctl 时,无法识别设置编码的选项:

pg_ctl init -D=D:\testdata -E=UTF8 -U=postgres
pg_ctl: illegal option -- E

这有变化吗?我使用最新的 PostgreSQL 9.6(zip 下载,x64)。 当我不使用 -E 开关时,一切正常,但数据库集群是用错误的编码初始化的。

pg_ctl 没有选项 -E。如果您想 运行 initdbpg_ctl,您需要使用 -o 传递 initdb 选项,例如pg_ctl initdb -D ... -o "-E=UTF8"

不过直接调用inidb就容易多了:

initdb -D=D:\testdata -E=UTF8 -U=postgres