openGauss6.0.2单机部署,UTF-8编码字符占位问题

#创建一张测试表,其中varchar字段设置20,如果是pgsql可以插入20个汉字,即与length函数查询的数量一致,但在openGauss中只能插入20/3个汉字,是设计如此吗?

create table table1 (id int, text text,varchar varchar(20), time TIMESTAMP);

insert into table1 VALUES(1,‘a’,‘ab中文中文中文’, now());

select *,“length”(varchar) from table1; #length显示是8

insert into table1 VALUES(2,‘b’,‘abc中文中文中文’, now())

ERROR: value too long for type character varying(20)
CONTEXT: referenced column: varchar

时间: 0.01s

我自己查了一下,早期的pgsql中varchar(20)代表20个字节,后期才改为字符数,设计是为了兼容早期的数据吧

有什么解决办法吗?那

写个脚本校验一下原有的数据库这种超限的字段有多少,都扩容一下字段。

A兼容模式下表示字节数,B模式和PG模式下表示字符数