一个疏忽引起的bug

2024-02-06 10:18
文章标签 bug 引起 疏忽

本文主要是介绍一个疏忽引起的bug,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

      来看建表语句:

CREATE TABLE `xxx` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,`user_id` bigint(20) unsigned NOT NULL DEFAULT 0,`clear_time` datetime NOT NULL DEFAULT '1970-01-01 00:00:00',PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 

       这三个字段对应的代码赋值为:

obj.Id = 0  // 实际插入代码时候,id会自增
UserId = 1
ClearTime = currentTime

      现在进行一个优化,需要让clear_time为1970-01-01 00:00:00, 于是在代码中直接去掉了上面的第三行代码,如下:

obj.Id = 0  // 实际插入代码时候,id会自增
UserId = 1
// ClearTime = currentTime

      于是,根据数据库建表语句中的default值,想当然地以为clear_time是1970-01-01 00:00:00, 以为这么简单的一个修改不会出错,但是,结果呵呵哒了。 其实,代码框架在处理时,把clear_time当成了空串,所以是按照第三个insert语句来执行的(而不是第一个):

mysql> insert into xxx set user_id = 1;
Query OK, 1 row affected (0.00 sec)mysql> insert into xxx set user_id = 1 and clear_time = '1970-01-01 00:00:00';
Query OK, 1 row affected (0.00 sec)mysql> insert into xxx set user_id = 1 and clear_time = '';  // 就是这里呵呵哒了
ERROR 1292 (22007): Incorrect datetime value: '' for column 'clear_time' at row 1
mysql> 
mysql> 
mysql> 
mysql> select * from xxx;
+----+---------+---------------------+
| id | user_id | clear_time          |
+----+---------+---------------------+
|  1 |       1 | 1970-01-01 00:00:00 |
|  2 |       1 | 1970-01-01 00:00:00 |
+----+---------+---------------------+
2 rows in set (0.00 sec)mysql> 

         呵呵哒。

         要吸取教训,该测试的要测试,该监控的要监控。

 

         不多说。      

 

这篇关于一个疏忽引起的bug的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/683990

相关文章

概率DP (由一道绿题引起的若干问题。目前为一些老题,蒟蒻的尝试学习1.0)

概率DP: 利用动态规划去解决 概率 期望 的题目。 概率DP 求概率(采用顺推) 从 初始状态推向结果,同一般的DP类似,只是经历了概率论知识的包装。 老题: 添加链接描述 题意: 袋子里有w只白鼠,b只黑鼠,A和B轮流从袋子里抓,谁先抓到白色谁就赢。A每次随机抓一只,B每次随机 抓完一只后 会有另外一只随机老鼠跑出来。如果两个人都没有抓到白色,那么B赢。A先抓,问A赢得概率。 w b 均在

JavaBug系列-解决SpringBoot返回Xml结构的问题

JavaBug系列之SpringBoot返回Xml结构的问题 Java医生一、关于错误信息二、如何解决问题 Java医生 本系列记录常见Bug,以及诊断过程和原因 作者:Java医生 教学: Java企业项目辅导,专注于辅导新入职员工,解决各种问题! V:study_51ctofx 一、关于错误信息 如图,SpringBoot请求返回Xml格式信息 通过以上信息分析,

JavaBug系列- Failed to load driver class com.mysql.cj.jdbc.Driver in either of HikariConfig class load

JavaBug系列之Mysql驱动问题 Java医生一、关于错误信息二、如何解决问题 Java医生 本系列记录常见Bug,以及诊断过程和原因 Java/一对一零基础辅导/企业项目一对一辅导/日常Bug解决/代码讲解/毕业设计等 V:study_51ctofx 一、关于错误信息 APPLICATION FAILED TO START Description: Fai

【解决bug之路】npm install node-sass(^4.14.1)连环报错解决!!!(Windows)

有关node-sass的深入分析可参考:又报gyp ERR!为什么有那么多人被node-sass 坑过? 主要有如下三方面错误,请自查: 1.node,npm版本需与node-sass版本匹配,像node-sass(^4.14.1)就得node 14.x版本才可以,node 16不行 gyp ERR! build error15 gyp ERR! stack Error: `

排查 MyBatis XML 配置中的 IF 语句与传值名称不匹配的 Bug

文章目录 本文档只是为了留档方便以后工作运维,或者给同事分享文档内容比较简陋命令也不是特别全,不适合小白观看,如有不懂可以私信,上班期间都是在得 前言,在改一个bug得时候发现一个有意思得问题,就是mybatis得xml中if判断得问题,传值名字不匹配依旧可以进行判断,如下图 传值userName,但是有意思得事情出现了,进了if,并且没有报错,尝试了两次都是这

彻底解决魅族手机无法彻底卸载应用的bug

使用Flyme系统的同学可能会遇到一个问题: 卸载了某些软件(例如通过开发者模式调试安装的应用)后,实际这个应用还残留在系统,当你用低版本或者其他签名的apk覆盖安装的时候会提示“安装失败”,要求你卸载后重新安装。 可是无论你从应用列表寻找还是清理垃圾,都根本找不到这个应用。 闹鬼?这个bug一直伴随着flyme,可怜工程师们竟然一个都没发现。 今天笔者教大家一招解决这个问题。

UTON HACK 4.0 黑客马拉松大赛在马来西亚引起巨大反响

自第四届UTON HACK黑客马拉松大赛开启报名以来,吸引了全世界范围内区块链技术精英的广泛参与,在东南亚地区特别是马来西亚引起了巨大反响。 近日,马来西亚主流媒体Delight Media Malaysia对本次黑客马拉松大赛的协办单位马来西亚何氏全球总商会、UM公司进行了专访。 前排左一起是何致呈、何德成、何伟贤、尼克及马克。 (Delight Media Malaysia摄) 马来

今天做了freemaker 导出word文档 的bug修复,解决 \n换行 问题

结合Freemaker导出文件 public void exportSimpleWord() throws Exception{// 要填充的数据, 注意map的key要和word中${xxx}的xxx一致Map<String,String> dataMap = new HashMap<String,String>();dataMap.put("username", "张三");dataMap.

android 6.0的DozeMode低功耗模式 及 引起的进程保活问题

一、问题的来源         由于Android的开放特性,加上国内app开发者的觉悟普遍不高的情况下,越来越多的app开始利用安卓的系统特性甚至可以称为漏洞,故意让app退出后仍然占用大量的硬件资源。   越来越多的应用会在后台运行时“假死”,即不进入真正的Sleep,而是不断在后台轮询搜集用户行为或者保持某些长链接来保障数据的实时性。而Android系统自身并未出台对应的策略来约束或者限制

DMA引起数组越界

今遇到了内存越界问题,很隐蔽   EXTERN  __IO uint16_t RegularConvData_Tab[2*3]; 定义的DMA搬运工的buffer大小为6   实际上当时红线标注,改为了12,导致后续的变量被赋值 只要此值小于定义的buffer的大小就可以了   这个越界是非常不注意的问题,编译器不报错