MySQL某条数据JDBC查不着,Navicat却可以

问题:RT

两个JF项目,使用同一个数据库,
MySQL 5.7.19 
JF(3.4 和 一个3.6)。
mysql-connector-java 5.1.44
druid 1.0.29

如果公用到某条数据, 有时候 JF 使用ID查询不出来, 但是在Navicat中又能看见这条数据,并且用Navicat修改一下数据保存后或者重启数据库后,Java这边又能查询出来了。


查询是普通的查询,没有使用锁, 。


目前没有头绪,准备换个数据库版本再试试。 大家有遇见这样的问题吗?

@JFinal  老大帮忙分析一下有哪些情况会导致这样的问题。


------------
解决方案:
修改MySQL配置:
query_cache_size设置为0即不使用缓存查询。

评论区

JFinal

2019-03-18 15:22

可否一直重现这个问题? 如果只是发生过一次,可能是手误写错代码的问题

杜福忠

2019-03-18 15:32

@JFinal 是的, 一天会出现2,3次。。。每次重启数据库,或知道是哪条数据时就修改一下不重要的字段,达到可用的效果。。。

JFinal

2019-03-18 15:33

@杜福忠 看样子是缓存的问题,看看引擎是不是 InnoDb

杜福忠

2019-03-18 15:35

@JFinal 是的,类型是 InnoDb
行格式是 Dynamic

JFinal

2019-03-18 15:47

@杜福忠 用排除法定位错误,这个问题不好猜

杜福忠

2019-03-18 15:48

@JFinal
key_buffer_size
256
MB, 索引的缓冲区大小

query_cache_size
128
MB, 查询缓存大小

tmp_table_size
384
MB, 临时表缓存大小

innodb_buffer_pool_size
384
MB, Innodb缓冲区大小

innodb_log_buffer_size
64
MB, Innodb日志缓冲区大小

sort_buffer_size
768
KB * 连接数, 每个线程排序的缓冲大小

read_buffer_size
768
KB * 连接数, 读入缓冲区大小

read_rnd_buffer_size
512
KB * 连接数, 随机读取缓冲区大小

join_buffer_size
2048
KB * 连接数, 关联表缓存大小

thread_stack
256
KB * 连接数, 每个线程的堆栈大小

binlog_cache_size
64
KB * 连接数

thread_cache_size
96
线程池大小

table_open_cache
192
表缓存

max_connections
2000
最大连接数

这样的配置, 那我把查询缓存关了,再试试吧, 看今天还有问题不

杜福忠

2019-03-18 23:26

目前没有再出现该问题,query_cache_size设置为0即不使用缓存查询。看来俱乐部QQ群287****老师说的非常对“一切都是缓存的锅”

chcode

2019-12-24 12:21

@杜福忠 我也出现了

chcode

2019-12-24 15:19

@杜福忠 关了缓存还是不行

杜福忠

2019-12-25 14:44

@chcode 还是用排除法定位错误吧。。。。说实在的,我也只是会写点SQL语句,MySQL的各种配置里面哪些算法,真没研究过。。。排除法吧。。改个找,实在不行,重装其他版本。。。重启《重装《换电脑

chcode

2019-12-25 14:45

@杜福忠 也许不是这个问题,我的使用场景有点特殊

热门反馈

扫码入社