mysql查询错误结果,难道是bug吗

xujiannan1988 2017-03-14 10:14:25
mysql 版本5.5.23-log
java 无框架,使用c3p0 驱动用的是 mysql-connector-java-5.1.13版本

今天遇到一个非常郁闷的问题,百思不得解,望高手解决。

现有表A 有一条数据主键ID为1
然后通过请求进入方法M,此方法有两个查询语句,第一句为任意sql语句,第二句是查询A表主键ID为1的那条数据。
用调试模式,当代码执行到第二句查询sql语句的时候暂停(此时第二句未执行),然后通过管理工具把表A主键ID为1的数据删除,然后把代码继续往下执行,你们猜什么结果,居然能查询到A表主键ID为1的那条数据,这不奇怪吗?明明就删除了,但是还能查询得到,太奇怪了,难道说执行第一句的时候就把所有数据库都查询下来缓存了吗。

还有就是,如果进入方法M,在第一句sql也不执行的时候暂停(也就是说一句都不执行的情况下),然后删除A表主键ID为1的数据,这个时候第二句就查询不到了,也就是说这个是正常情况。

但是为什么会有第一种情况呢,希望大神帮忙解决,已经纠结了我很久了,甚是烦恼。
...全文
138 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xujiannan1988 2017-03-15
  • 打赏
  • 举报
回复
找到问题的原因了,把事务级别Repeatable Read换成Read Committed就OK了,谢谢大家
xujiannan1988 2017-03-15
  • 打赏
  • 举报
回复
进入查询方法是开启了事务的,但是我删除数据是用工具删除了,确认数据已经被删除并被提交,在代码里面再查询不管是否开启事务都应该查询不到才对啊
小武格 2017-03-14
  • 打赏
  • 举报
回复
用了数据源了,那肯定是开启事务了,了解一下事务吧
小武格 2017-03-14
  • 打赏
  • 举报
回复
你查询的时候有没有开启事务?

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧