求助,一个非常奇怪的问题,本地良好程序,部署后查询数据库出现问题

我的本地环境是windows10,mysql,java8,tomcat7。
生产坏境是ubuntu,mysql,java8,tomcat7(tomcat8)。

我写了一个查询公交车站的java web程序。用了spring mvc,mybatis。数据库用的是mysql,程序用到了2个表,一个bus_line,一个bus_station。

这个程序在我本地运行良好,但部署到线上后,程序对我2个表其中的一个,bus_station表,查询不到任何东西。而我查log,上面显示

18:26:52.473 [http-nio-8080-exec-7] DEBUG com.jiaotong114.jiaotong.mapper.LineMapper.selectSingleStationByNameAndCity - ==> Preparing: SELECT * FROM bus_station WHERE name = ? AND city = ?
18:26:52.473 [http-nio-8080-exec-7] DEBUG com.jiaotong114.jiaotong.mapper.LineMapper.selectSingleStationByNameAndCity - ==> Parameters: 烟草公司(String), 南通(String)
18:26:52.474 [http-nio-8080-exec-7] DEBUG com.jiaotong114.jiaotong.mapper.LineMapper.selectSingleStationByNameAndCity - <== Total: 0

我在线上数据库中,直接查询SELECT * FROM bus_station WHERE name = '烟草公司' AND city = '南通',可以查出一条数据。

也就是说,我在程序中用mybatis查不到信息,但直接在数据库中用同样的条件查却可以查出来。

而且这个问题在本地是没有的。

我相信是数据库,或者数据库与程序连接处出了什么问题,但不能确定是哪里出问题

请各位大虾指点一二。

阅读 3.4k
4 个回答

确认参数,尤其是 xml 中制定的参数的写法,以及实参传参;

同一套code,部署至本地,启动本地环境,调试便知;

怀疑是编码问题,请全部使用UTF8编码再试。代码文件全部使用UTF8无BOMunix换行符格式保存,数据库编码使用UTF8,再试一次

应该是编码的问题,你先试一下name和city参加是英文的是否能查询出结果。

如果能查询出结果,name和city参数是从界面输入的话,需要看一下前端jsp文件头声明的编码,最好在@page中声明成和数据库端一致的编码格式。

上面大虾估计的对 你试试查查全英文的,如果条件允许 也可以开一下mysql.log看一下,mysql到底执行了什么查询

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题