高斯数据库 varchar(32) 12个中文都保存不了?

高斯数据库 varchar(32) 12个中文都保存不了?

工作中遇到 value too long for type character varying(32) 的异常问题,这个很明显是保存的值超过了字段的长度导致异常,最简单的方法就是增加字段长度。

但是通过分析发现该字段能保存32个英文、数字字符,中文字符缺保存不了,这是为啥?现在大多数数据库 varchar(n) n 一般是字符长度不是字节长度,难道高斯库默认保存是字节长度,好奇心驱使下,查找官方文档字符类型发现,还真是默认是字节长度
image

  • PG兼容模式下,n是字符长度,其他模式下n是字节长度

通过 show_sqlcompatibility 查看兼容模式
image

默认值 A,也就是O数据库兼容模式,所以回到上面的问题,varchar(32)32是指字节长度,一个中文字符占3字节,所以保存出错,至此问题也搞清楚了

posted @ 2025-07-14 15:03  yisnon  阅读(183)  评论(0)    收藏  举报