Mysql数据库只有一条数据,但是界面查询出来有多个数据
程序员文章站
2022-04-09 23:12:57
...
简单的功能自己也没有注意测,提交给测试,第二天就发生产了,已经一周过去了,测试今天回归才发现,在点击页签是发现两条数据相同,通过条件帅选,只选择一条数据,问我是不是点击查询的时候 是否做过处理,我不确定重新看下代码,在sit环境也亲自测了下,没有做处理。
发现问题
一:拿着查询条件到数据库去查,数据库是一条数据,但是界面查询出来两条数据
二:跟测试说大概是前端分页插件的问题,sql不会有问题 (自信还是有的)
分析问题:
1:先排查服务端给前端数据是否就有重复
2:服务端数据没有问题,则应该是前端页面展示问题
解决问题
1:点击第一页的时候打断点找到sql,把sql拎出来到mysql工具中执行,同样的拿出来第二页,第三页,第四页,第五页
2:发现第二页和第三页还有后面的几页都包含前面查出来的数据,查出的数据就有重复,那就看下是不是sql有问题
SELECT
id,
catalogue1_name as catalogue1Name,
catalogue1_code as catalogue1Code,
catalogue2_name as catalogue2Name,
catalogue2_code as catalogue2Code,
level4_group_name as level4GroupName,
level4_group_code as level4GroupCode,
create_time as createTime,
update_time as updateTime
FROM
tn_test
WHERE
1=1
<#if catalogue1Name?exists && catalogue1Name!="">AND catalogue1_name like "%":catalogue1Name"%" </#if>
<#if catalogue2Name?exists && catalogue2Name!="">AND catalogue2_name like "%":catalogue2Name"%" </#if>
<#if level4GroupCode?exists && level4GroupCode!="">AND level4_group_code= :level4GroupCode </#if>
<#if level4GroupName?exists && level4GroupName!="">AND level4_group_name like "%":level4GroupName"%" </#if>
order by create_time desc
limit :offset, :size
3:看sql没有感觉没有啥问题
4:再看看数据库中的数据,创建时间,看看数据,根据创建时间排序,因为时间是一样的,每次调用经过排序后的数据都是不一样的,所有问题估计就出在时间上
因为id是自增的,所以这个地方sql的排序需要修改,修改如下:
order by create_time desc,id desc
验证问题
1:sql修改后,启动本地跑下看看数据没有重复的了
2:发布到sit环境和pre环境,让测试再次验证 ok。
推荐阅读