给别人做网站用什么,建站公司现状,桂林两江四湖属于哪个区,德阳做网站公司项目场景#xff1a;
数据库环境 #xff1a;mysql8; 工程使用#xff1a;MyBatisPlus 表情况#xff1a; 问题描述
某一个插入语句使用了 MyBatisPlus 的 save 方法#xff0c;因为end_time1 end_time2都并没有值#xff0c;所以在MyBatisPlus默认情况下#xff0c;…项目场景
数据库环境 mysql8; 工程使用MyBatisPlus 表情况 问题描述
某一个插入语句使用了 MyBatisPlus 的 save 方法因为end_time1 end_time2都并没有值所以在MyBatisPlus默认情况下并不会在插入语句中提及
最终提取其SQL INSERT INTO aaaa (serial_no, business_date, market_no, report_code) VALUES (31, 20230704, 1, ‘688610’)
结果报错 Field end_time1 doesnt have a default value。 一般情况下这种报错是表设置成非空字段我们又没设置默认值导致的。但是这里我们明明表中设置了可空。而且该场景为偶现我们单独把SQL提取出来执行又是可以的排查数小时无果。 原因分析
偶现目前无法查出其原因可能需要去Mysql源码来看原因了 解决方案
既然说的是没有默认值那我们就在插入的时候指定传null 进去即可由于MyBatisPlus的特性所以最终在DBclass层为end_time1和end_time2都设置为null 也插入和更新 该参数的运行原理可见往期博文《MybatisPlus 构造器wrapper的使用与原理》 中的“易错点-null处理”小节
最终生成的SQL如下 INSERT INTO aaaa ( serial_no, business_date, market_no, report_code, end_time1, end_time2 ) VALUES ( 63, 20230704, 1, ‘688610’, , ) 修复后没有再次报错。