PostgreSQL 数据库 正常情况下指定了 locale=C 与 encoding=UTF8 (最简单) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wzw
V2EX    PostgreSQL

PostgreSQL 数据库 正常情况下指定了 locale=C 与 encoding=UTF8 (最简单)

  •  1
     
  •   wzw 2024-04-29 10:02:50 +08:00 2373 次点击
    这是一个创建于 605 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前需要上新项目, 用了 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 之外的任何字符编码与本地化排序规则选项

    13 条回复    2024-05-09 12:47:13 +08:00
    chuck1in
        1
    chuck1in  
       2024-04-29 10:19:12 +08:00   1
    pg sql 我记得方便的地方就是你不需要做什么设置吧,默认就是最佳实践直接开用就行了。

    https://github.com/ccmjga/mjga-scaffold/blob/main/compose.yaml

    这个 pgsql 里面什么也没有设置,直接拿来用就是可以上生产的。
    wzw
        2
    wzw  
    OP
       2024-04-29 10:35:11 +08:00
    @chuck1in 默认会按服务器的 LC 信息走,

    之前我也是开箱直接用, 但是看了这个文章, 才来问问
    Radeon
        3
    Radeon  
       2024-04-29 16:21:28 +08:00   1
    对。但是 aA 不会排到一起,中文排序也是没有明显规则的。毕竟 locale=C 就是按照字符集里的出现顺序
    wzw
        4
    wzw  
    OP
       2024-04-29 16:45:32 +08:00
    @Radeon 好的, 不会有坑就行, 排序问题, 目前还没遇到这个功能需求
    Vonng
        5
    Vonng  
       2024-04-30 09:46:32 +08:00   1
    我是原作者。用 C locale 的好处文章里面已经说过了。
    但纯 C locale 有一个问题,pg_trgm 三字组全文模糊检索功能会收到影响。

    我推荐专门指定 lc_ctype 为 en_US ,这样可以解决这个问题。
    当然,如果你用不着这个功能,也可以直接全部使用 C.UTF8 。

    使用 C.UTF8 的另一个好处是,对不同操作系统环境的兼容性更好。
    比如,如果你使用最小安装,中文操作系统,那么可能 en_US.UTF8 这个 locale 定义都是没有的。
    但是 C.UTF8 这个 locale 总是在所有操作系统中可用的。
    wzw
        6
    wzw  
    OP
       2024-04-30 11:41:40 +08:00
    @Vonng 都是 Ubuntu 20.04/22.04 英文系统跑数据库.

    所以最终建议是 --locale=C --encoding= en_US .UTF8 吗?
    wzw
        7
    wzw  
    OP
       2024-04-30 11:46:34 +08:00
    @Vonng --locale=C --ctype=en_US.UTF-8 --encoding=en_US.UTF-8 是这样吗?
    wzw
        8
    wzw  
    OP
       2024-04-30 11:57:26 +08:00
    @Vonng 问了 GPT-4, 最终应该是:

    --locale=en_US.UTF-8 --lc-ctype=en_US.UTF-8 --encoding=UTF8 吧?

    请你帮忙确认, 谢谢
    wzw
        9
    wzw  
    OP
       2024-05-01 16:20:19 +08:00
    --locale=C --lc-ctype=en_US.UTF-8 --encoding=UTF8
    lolizeppelin
        10
    lolizeppelin  
       2024-05-03 14:38:25 +08:00
    pg 最好指定 lc_message=en_US.UTF-8
    wzw
        11
    wzw  
    OP
       2024-05-04 21:51:12 +08:00 via iPhone
    @lolizeppelin #10 为啥
    lolizeppelin
        12
    lolizeppelin  
       2024-05-08 17:42:22 +08:00
    @wzw
    code 不能确定具体错误, 很多错误需要解析错误文本才能确定具体错误
    wzw
        13
    wzw  
    OP
       2024-05-09 12:47:13 +08:00
    @lolizeppelin #12 问了 GPT-4, 谢谢你的分享, 还有什么吗?

    --locale=C --lc-ctype=en_US.UTF-8 --lc_message=en_US.UTF-8 --encoding=UTF8
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2622 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 15:25 PVG 23:25 LAX 07:25 JFK 10:25
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86