首页 > 其他分享 >记一次存储过程bug记录

记一次存储过程bug记录

时间:2024-05-30 21:33:07浏览次数:16  
标签:存储 uid 记录 user address WHERE bug SELECT DELETE

为了快速清空测试数据,把几条删除语句换成了存储过程,如下所示:

CREATE DEFINER=`deme`@`%` PROCEDURE `delete_user_data`(IN address VARCHAR(255))
BEGIN
    DELETE FROM t_user_bind WHERE uid IN (SELECT id FROM t_user WHERE address = address);
    DELETE FROM t_x_log WHERE uid IN (SELECT id FROM t_user WHERE address = address);
    DELETE FROM t_pipeline WHERE uid IN (SELECT id FROM t_user WHERE address = address);
END

提示成功但是发现表的数据被清空了。

 找了半天才知道存储过程的入参不能与where中列名相同,不然会发生意想不到的错误。。。于是修改入参为addr。

CREATE DEFINER=`deme`@`%` PROCEDURE `delete_user_data`(IN addr VARCHAR(255))
BEGIN
    DELETE FROM t_user_bind WHERE uid IN (SELECT id FROM t_user WHERE address = addr);
    DELETE FROM t_x_log WHERE uid IN (SELECT id FROM t_user WHERE address = addr);
    DELETE FROM t_pipeline WHERE uid IN (SELECT id FROM t_user WHERE address = addr);
END

结果运行报错:Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operation '='

查了资料后,说是两个字段的排序规则不一致,采用一种方法优化后:

CREATE DEFINER=`deme`@`%` PROCEDURE `delete_user_data`(IN addr VARCHAR(255))
BEGINDECLARE userID bigint;
    SELECT id INTO userId from t_user WHERE address = addr COLLATE utf8mb4_0900_ai_ci ;
    DELETE from t_user_bind WHERE uid = userId;
    DELETE from t_pipeline WHERE uid = userId;
    DELETE from t_x_log WHERE uid = userId;
END

 运行成功,虽然后面查看了各字段的排序规则,感觉没有差别,而且在运行窗口是没问题,就放在存储过程中一起就有问题,害,注意点真多

标签:存储,uid,记录,user,address,WHERE,bug,SELECT,DELETE
From: https://www.cnblogs.com/qgc1995/p/18202581

相关文章

  • BUUCTF Crypto 1~20刷题记录
    文章目录一、Crypto1、MD52、Url编码3、摩丝4、password5、Quoted-printable6、篱笆墙的影子7、Rabbit8、RSA9、丢失的MD510、Alice与Bob11、大帝的密码武器12、rsarsa13、Windows系统密码14、信息化时代的步伐15、凯撒?替换?呵呵!16、萌萌哒的八戒17、权限获得第一步18、......
  • Debug-013-el-loading中显示倒计时时间
    前言:            今天实现一个小小的优化,业务上是后端需要从设备上拿数据,所以前端需要不断调用一个查询接口,直到后端数据获取完毕,前后端根据一个ending字段为true判断停止调用查询接口。由于这个查询时间比较久,所以需要一个laoding效果。优化:前端除了根据后......
  • 鸿蒙HarmonyOS实战-Web组件(页面跳转和浏览记录)
    ......
  • ceph客户端配置自动挂载存储服务
    1.安装支持ceph的内核模块可选:centos/ubuntu:yuminstall-yceph-common或aptinstall-yceph-common2.拷贝认证密钥cephadmin@ceph-deploy:~/ceph-cluster$sudoscpceph.confceph.client.admin.keyringroot@<客户端服务器IP>:/etc/ceph测试获取集群信息:客户......
  • 【软件测试】软件测试概念 | 测试用例 | BUG | 开发模型 | 测试模型 | 生命周期
    文章目录一、什么是软件测试1.什么是软件测试2.软件测试和调试的区别测试人员需要的素养二、软件测试概念1.需求1.需求的定义2.测试人员眼中的需求2.测试用例1.测试用例概念3.BUG软件错误4、开发模型和测试模型1.软件的生命周期2.开发模型1.瀑布模型2.螺旋模型3.......
  • 代码随想录算法训练营Day55 | 583. 两个字符串的删除操作、72. 编辑距离、编辑距离总
    本文目录583.两个字符串的删除操作做题看文章72.编辑距离做题看文章编辑距离总结篇以往忽略的知识点小结个人体会583.两个字符串的删除操作代码随想录:583.两个字符串的删除操作Leetcode:583.两个字符串的删除操作做题找出最长公共子序列,然后用两个字符串的......
  • Ubuntu18.04 + Caffe + python3.7 + CUDA11 + cuDNN8编译记录 转载文章 非原创
    背景这两天接手了一个在两年前基于caffe实现的交互式活体检测的项目,想要让他在python3和CUDA11的环境下运行。但是呢,caffe已经官方宣布不再继续更新,不支持最新版的cuDNN8,那需求摆在这边只好自行想办法,前前后后倒腾了两天,可算是编译成功把项目跑通了,在此记录一下自己配置辛酸史。......
  • 存储型XSS
    前言什么是存储型xss:提交恶意xss数据,存入数据库中,访问时触发。存储型xss和反射型xss区别:存储型存入数据库中,可持续时间长,而反射型持续时间短,仅对本次访问有影响,反射型一般要配合社工。存储型xss操作过程:嵌入到了web页面的恶意代码被存储到服务器上,例如你注册时候将用......
  • OpenStack学习笔记之四:Cinder流程介绍及GlusterFS存储对接
    4、Cinder详解及存储对接4.1Cinder流程介绍4.1.1流程结构Cinder服务由四个进程组成:①cinder-api是一个WSGI应用程序,它接受并验证来自客户端的REST(JSON或XML)请求,并通过AMQP将它们路由到适当的其他Cinder进程。②cinder-scheduler确定哪个后端应作为卷创建或移动请求......
  • 【QT】QHash键值对记录QTcpSocket客户端句柄
    第一步:.h文件代码#ifndefSOCKETMAP_H#defineSOCKETMAP_H#include<QHash>#include<QDebug>#include<QTcpSocket>#include<QException>classSocketMap:publicQObject{Q_OBJECTpublic:SocketMap();public:staticboolupd......