Mysql数据库只有一条数据,但是界面查询出来有多个数据

简单的功能自己也没有注意测,提交给测试,第二天就发生产了,已经一周过去了,测试今天回归才发现,在点击页签是发现两条数据相同,通过条件帅选,只选择一条数据,问我是不是点击查询的时候 是否做过处理,我不确定重新看下代码,在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。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Python的多线程库`threading`来实现多线程上传数据数据库,具体操作如下: 1. 将需要上传的数据分成多个批次,每个批次包含一部分数据。 2. 创建一个线程池,每个线程负责上传一个批次的数据数据库。 3. 每个线程的上传操作需要放在一个函数中,然后将这个函数作为参数传递给`Thread`类的构造函数,以创建线程对象。 4. 使用`start`方法启动线程,等待所有线程上传完成后结束程序。 示例代码如下: ```python import threading import mysql.connector # 数据库配置 config = { 'user': 'root', 'password': 'password', 'host': '127.0.0.1', 'database': 'test' } # 上传数据的线程函数 def upload_data(data): conn = mysql.connector.connect(**config) cursor = conn.cursor() sql = "INSERT INTO data_table (column1, column2) VALUES (%s, %s)" cursor.executemany(sql, data) conn.commit() cursor.close() conn.close() # 主函数 def main(): data = [...] # 10万数据 batch_size = 1000 # 每个批次包含1000数据 threads = [] # 线程池 for i in range(0, len(data), batch_size): batch_data = data[i:i+batch_size] t = threading.Thread(target=upload_data, args=(batch_data,)) threads.append(t) t.start() # 等待所有线程完成上传 for t in threads: t.join() if __name__ == '__main__': main() ``` 上面的代码将10万数据分成每个批次1000数据,通过多线程将数据上传到数据库。每个线程负责上传一个批次的数据多个线程同时上传可以提高上传速度和程序响应速度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值