SQL数据清洗实战:重复值、空值和异常值怎么处理?
企业做数据分析时,最容易被低估的环节,往往不是建模,也不是做可视化,而是数据清洗。
项目预算和交付日期变了,为什么不能直接改台账?
项目预算和交付日期变了,为什么不能直接改台账?一个项目开始执行后,预算需要增加,计划结束时间需要后移,项目经理也可能交接。给台账加一个编辑按钮,就能很快把最新数字填进去。但过一段时间再回头看,团队往往还要回答另一组问题:原来怎么定的,为什么要改,谁批准的,这次到底改了哪些内容?
凌晨告警炸了:就两句UPDATE,凭什么互相掐死对方?
跑批脚本半夜报错:ERROR 1213 (40001): Deadlock found when trying to get lock;try restarting transaction运维第一反应都是——重跑一次。还真过了。
updateById 更新时 null 字段无法置空怎么处理?
updateById 更新时 null 字段无法置空?
JSON字段映射数据库TypeHandler一步搞定
商品表的扩展属性存 JSON 字符串,实体类里是个对象,每次查询都要手动 JSON.parse 转换,写入前又要 JSON.toJSONString。
先查询再更新,还是update-where-status-xx,并发下的两种命运
取消订单的代码,几乎每个后端都写过:先查出来,校验状态是不是"待支付",再 updateById 改成"已取消"。测试环境点一百次都对。可线上同一秒里,用户点了取消,支付回调同时到达——一个把它改成"已取消",一个把它改成"已支付",最后留在库里的状态,取决于谁后提交。
go gorm insert 报错 DELETE SET NULL ON UPDATE SET NULL
近期在采用Go语言搭建后端服务的项目进程中,借助GORM框架操作MySQL数据库执行数据插入操作时,系统突然抛出一串异常报错,其核心报错信息明确指向DELETE SET NULL ON UPDATE SET NULL规则。
MySQL中SELECT FOR UPDATE 有什么含义,会锁表还是锁行还是其他
在 MySQL 高并发业务中,并发更新丢失、数据覆盖、数据不一致是非常常见的问题。为了保证同一行数据在多线程、多事务场景下的更新安全,业界普遍采用悲观锁方案,而 SELECT … FOR UPDATE 就是 InnoDB 引擎最核心的悲观锁实现语法。
出库主表和明细表的写入操作与库存扣减操作不在同事务数据不一致
根本原因是出库主表和明细表的写入操作与库存扣减操作不在同一个事务中,或者事务控制范围不正确。当库存校验失败抛出异常时,出库单据已经提前写入数据库,导致数据不一致。