首页 新闻 搜索 专区 学院

mysql查询数据为空

0
悬赏园豆:20 [已解决问题] 解决于 2019-03-29 17:45

MySql数据库恢复后,在一个查询页面去查询数据明明数据库中有数据,但是得到的记录数为0(有的时候是不管关键字是什么,查询到的数据和当前数据库中的不一致,而且是固定的结果)
在登陆界面都是可以正常读取数据的
连接字符串没有任何问题
在sql语句上加上 数据库名.表名也不行
缓存也没有,直接从数据库读取的
把调试生成的语句放在数据库里执行,可以查到数据
恢复数据库之前都是正常的

问题补充:

大概知道问题原因了。按英文关键词查都是没有问题的。但是按中文关键词就查不出来。应该是编码的问题。但是不知道怎么改,我看字段的编码都是UTF-8的。还有,恢复数据库后,字段的中文注释都成了乱码。

寻找薛定谔的猫的主页 寻找薛定谔的猫 | 初学一级 | 园豆:83
提问于:2019-03-29 07:57
< >
分享
最佳答案
0

本机debug下服务器环境,打断点,一步步调试。肯定是程序哪里有问题

收获园豆:20
coco_xu | 小虾三级 |园豆:505 | 2019-03-29 12:53

大概知道问题原因了。按英文关键词查都是没有问题的。但是按中文关键词就查不出来。应该是编码的问题。但是不知道怎么改,我看字段名都是UTF-8的。还有,恢复数据库后,字段的中文注释都成了乱码。

寻找薛定谔的猫 | 园豆:83 (初学一级) | 2019-03-29 17:19

@寻找薛定谔的猫: (1)你看下你代码配置中链接数据库的时候,是否有设置编码,是否是utf-8
(2)看下服务器设置的编码。
1的可能性比较大啊

coco_xu | 园豆:505 (小虾三级) | 2019-03-29 17:24

@coco_xu: 我已经把数据库的编码都设置成了utf-8,还是不行呢。在数据库直接用中文关键字查询,可以查出来,但是程序里中文关键字,就不行。

寻找薛定谔的猫 | 园豆:83 (初学一级) | 2019-03-29 17:33

@coco_xu: 刚才我又看了一下,我用set命令修改的编码,结果会话结束后(可能是重启mySQL服务造成的)编码又变回去了。现在找不到my.ini。。。mysql 8.0好像没有这个配置文件。我在找找看。

寻找薛定谔的猫 | 园豆:83 (初学一级) | 2019-03-29 17:38

@寻找薛定谔的猫: 不只是数据库啊,还有代码中设置数据库链接的地方呀。
比如说我用的是tomcat服务器启应用的,在context.xml中设置数据库链接的地方
<Resource acquireIncrement="2" auth="Container" driverClass="org.gjt.mm.mysql.Driver" factory="com.****.seashell.encrypt.C3p0BeanFactory" idleConnectionTestPeriod="3600" jdbcUrl="jdbc:mysql://127.0.0.1:3306/test?useCursorFetch=true&useUnicode=true&characterEncoding=UTF-8" maxIdleTime="3600" maxPoolSize="30" minPoolSize="3" name="**/JDBC/TEST" password="111111" type="com.mchange.v2.c3p0.ComboPooledDataSource" user="root"/>

这个:characterEncoding=UTF-8

coco_xu | 园豆:505 (小虾三级) | 2019-03-29 17:38

@寻找薛定谔的猫: 不需要找mysql下的my.ini文件,去设置你查询的那张表的编码呀,设置成utf-8

你要保证服务器编码和数据库编码 是一致的哈

coco_xu | 园豆:505 (小虾三级) | 2019-03-29 17:40

@coco_xu: 可以了!!!!!困扰一整天的问题终于解决了。谢谢

寻找薛定谔的猫 | 园豆:83 (初学一级) | 2019-03-29 17:45
其他回答(2)
0

仔细检查下吧,看是不是连错数据库了。或者设置断点跟下代码

会长 | 园豆:9555 (大侠五级) | 2019-03-29 08:03

我也一直想是不是连到别的数据库了,可是我修改了用户表的用户名,就不能登录了,不是说明连的就是当前数据库吗?很老的项目升级改造,不能直接在VS里设置断点调试。不过我从后台取到连接字符串和SQL语句返回前台打印,都是没有错的。很郁闷,

支持(0) 反对(0) 寻找薛定谔的猫 | 园豆:83 (初学一级) | 2019-03-29 08:23

@寻找薛定谔的猫: 那估计是程序本身有bug,数据变了导致整个bug浮出水面了

支持(0) 反对(0) 会长 | 园豆:9555 (大侠五级) | 2019-03-29 08:43

@会长: 可是代码根本就没动,只是升级数据库后恢复了一下备份。要是连错数据库就好了。。可是哪也查不出问题。

支持(0) 反对(0) 寻找薛定谔的猫 | 园豆:83 (初学一级) | 2019-03-29 08:52

@会长: 又出现了新问题,本身登陆成功了,过了一会儿注销再登陆一直提示用户名密码错误。然后重启IIS的应用程序池后正常。真是见鬼了。

支持(0) 反对(0) 寻找薛定谔的猫 | 园豆:83 (初学一级) | 2019-03-29 08:57

大概知道问题原因了。按英文关键词查都是没有问题的。但是按中文关键词就查不出来。应该是编码的问题。但是不知道怎么改,我看字段名都是UTF-8的。还有,恢复数据库后,字段的中文注释都成了乱码。

支持(0) 反对(0) 寻找薛定谔的猫 | 园豆:83 (初学一级) | 2019-03-29 17:19
0

删除缓存文件,关机重启

KingMi | 园豆:1098 (小虾三级) | 2019-03-29 09:25

重启了服务器,还是不行

支持(0) 反对(0) 寻找薛定谔的猫 | 园豆:83 (初学一级) | 2019-03-29 10:06

大概知道问题原因了。按英文关键词查都是没有问题的。但是按中文关键词就查不出来。应该是编码的问题。但是不知道怎么改,我看字段名都是UTF-8的。还有,恢复数据库后,字段的中文注释都成了乱码。

支持(0) 反对(0) 寻找薛定谔的猫 | 园豆:83 (初学一级) | 2019-03-29 17:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册