1.机构用户管理列表数据重复问题
- 环境:用户管理基础系统 (xhszjs.com)、用户管理基础系统 (xhszjs.cn)
- 描述:客户和用户管理=》用户管理=》机构用户管理,机构用户列表数据重复的情况。
- 如图所示:
生产环境:
测试环境:
2.排查及解决过程:
- 问题sql:
- 定位:
sub_org_user=》`cust_manager` varchar(32) DEFAULT NULL COMMENT '客户经理',与sub_org_contact=》`id` bigint(64) NOT NULL COMMENT '主键id 雪花算法产生',两表关联字段数据类型不一致,数据关联时包含有数据类型自动转换的过程,怀疑是类型转换后匹配异常导致的数据重复。
- 尝试采用TIDB支持的MYSQL数据类型转换专用函数CAST(VALUE AS TYPE)进行数据转换后再关联,修改如下:
- 在测试环境数据库中调试,执行情况符合预期,相同条件下未再出现关联数据重复问题;在开发环境数据库中,构建类似的数据,执行原有未经显示转换的问题sql,未能复现关联数据重复的问题,执行显示转换后的sql,关联数据也是正常的。怀疑数据库版本不一致导致的部分sql执行特性的差异造成的。经过查询,开发环境版本=》7.25-TiDB-v4.0.9,测试环境=》5.7.25-TiDB-v5.2.1,但暂未在文档中查询到有关本次执行细节差异的相关说明。
- 建议,在可知的表关联字段数据类型的前提下,在定义表的关联字段数据类型的时候,请保持一致。避免在数据库不同版本间切换后,因隐形的数据类型自动转换细节的差异,导致关联查询出现异常。