【背景】
使用 portal 工具将 MySQL 数据库一键迁移至 openGauss,目标数据库为 B 兼容模式。
【问题现象】
在 Spring Boot 应用中执行 update 操作时,数据库报错:data too long for column。
举例:从表中查询一条数据,name=’xxxxxxx’。当我update时(name值未变,和db查询是一样的结果)
jdbc驱动,数据库版本均为6.0.2
将 同一条 SQL 复制到 openGauss 客户端(如 gsql / Navicat)中直接执行则没有问题。
【排查过程】
初步排除 SQL 语法问题后,查阅 openGauss 官方文档发现:
-
varchar(n)中的n表示 字节长度,而非字符长度 -
与 MySQL 中
varchar(n)(按字符数理解)存在差异
【疑问】
在 MySQL 迁移到 openGauss(B 兼容模式)后,除了放大varchar长度(感觉违背了一键迁移的初衷),应用层面有什么适配的方案吗?
