mysql使用过程中遇到的问题

1、提示:违反并发性: UpdateCommand 影响了预期 1 条记录中的 0 条

数据库从mysql5.1升级到5.7之后,因为5.1和5.7的版本迭代很大,
在执行UPDATE的时候,数据库会根据你传递的数据源进行where条件拼接,
当前端改过数据之后,数据库的没能及时更新前端,
就会出现系统和数据库的数据不匹配,报这个错误

this.cb = new MySqlCommandBuilder();//先不附MySqlCommandBuilder
                    string propertyName = "ConflictOption";
                    Type ts = cb.GetType();
                    System.Reflection.PropertyInfo _findedPropertyInfo = ts.GetProperty(propertyName);
                    if (_findedPropertyInfo != null)
                    {
                        ts.GetProperty(propertyName).SetValue(cb, ConflictOption.OverwriteChanges, null);//关键,where子句只包含PK
                    }
                    cb.DataAdapter = adapter;//到这里才把MySqlCommandBuilder和MySqlDataAdapter关联

2、DELETE FROM A WHERE A.ID IN (SELECT AID FROM B);

mysql5.7 执行以上sql删除的时候,会遇到效率问题,
问题描述:我要通过B表中的AID当做A表的删除条件,A表的ID是有索引的,但是删除的时候,通过执行计划发现,A表的ID索引未生效,导致删除数据非常慢。
解决方案:通过表别名可以快速时间 DELETE T1 FROM A T1 WHERE T1.ID IN (SELECT AID FROM B);
解决后:未做表别名,删除时间在3-4分钟左右,做表别名后,删除时间2-3秒
参考文章:直通车
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值