高斯数据库 varchar(32) 12个中文都保存不了?
高斯数据库 varchar(32) 12个中文都保存不了?
工作中遇到 value too long for type character varying(32) 的异常问题,这个很明显是保存的值超过了字段的长度导致异常,最简单的方法就是增加字段长度。
但是通过分析发现该字段能保存32个英文、数字字符,中文字符缺保存不了,这是为啥?现在大多数数据库 varchar(n) n 一般是字符长度不是字节长度,难道高斯库默认保存是字节长度,好奇心驱使下,查找官方文档字符类型发现,还真是默认是字节长度

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


浙公网安备 33010602011771号