目前需要上新项目, 用了 PostgreSQL, 这样的设置是不是正常情况下, 最简单最合适?
谢谢
pg_createcluster 16 main --locale=C --encoding=UTF8 --start
===
看到这篇文章
PG 中的本地化排序规则 https://pigsty.io/zh/blog/admin/collate/
里面提到:
为什么 Pigsty 在初始化 Postgres 数据库时默认指定了 locale=C 与 encoding=UTF8
答案其实很简单,除非真的明确知道自己会用到 LOCALE 相关功能,否则就根本不应该配置 C.UTF8 之外的任何字符编码与本地化排序规则选项
1
chuck1in 237 天前 1
pg sql 我记得方便的地方就是你不需要做什么设置吧,默认就是最佳实践直接开用就行了。
https://github.com/ccmjga/mjga-scaffold/blob/main/compose.yaml 这个 pgsql 里面什么也没有设置,直接拿来用就是可以上生产的。 |
3
Radeon 237 天前 1
对。但是 aA 不会排到一起,中文排序也是没有明显规则的。毕竟 locale=C 就是按照字符集里的出现顺序
|
5
Vonng 236 天前 1
我是原作者。用 C locale 的好处文章里面已经说过了。
但纯 C locale 有一个问题,pg_trgm 三字组全文模糊检索功能会收到影响。 我推荐专门指定 lc_ctype 为 en_US ,这样可以解决这个问题。 当然,如果你用不着这个功能,也可以直接全部使用 C.UTF8 。 使用 C.UTF8 的另一个好处是,对不同操作系统环境的兼容性更好。 比如,如果你使用最小安装,中文操作系统,那么可能 en_US.UTF8 这个 locale 定义都是没有的。 但是 C.UTF8 这个 locale 总是在所有操作系统中可用的。 |
8
wzw OP |
9
wzw OP --locale=C --lc-ctype=en_US.UTF-8 --encoding=UTF8
|
10
lolizeppelin 233 天前
pg 最好指定 lc_message=en_US.UTF-8
|
11
wzw OP @lolizeppelin #10 为啥
|
12
lolizeppelin 228 天前
@wzw
code 不能确定具体错误, 很多错误需要解析错误文本才能确定具体错误 |
13
wzw OP @lolizeppelin #12 问了 GPT-4, 谢谢你的分享, 还有什么吗?
--locale=C --lc-ctype=en_US.UTF-8 --lc_message=en_US.UTF-8 --encoding=UTF8 |