关于MySQL版本不一致及编码的问题

楼主最近做了一个图书管理web项目,但是在发布到阿里云服务器时项目不能运行,但是在楼主的本地电脑运行无误,下面是解决过程:

1、刚开始时在浏览器访问服务器发布的项目时,报错:HibernateUtil.class未找到。

HibernateUtil是楼主写的dao层工具类,楼主在服务器项目下的对应文件夹发现HibernateUtil.class存在,没有问题,这可急坏了楼主,于是网上一通求助,看博客,最后折腾了一天,还是没有解决,中间还把服务器的MySQL重新装了一遍,在吃晚饭的时候楼主突然就顿悟了,突然想起来去看了hibernate的配置文件,发现要连接的数据库名是大写的(BooksManage),但是我本地电脑上的MySQL版本是5.1,数据库及表的字段名统一默认小写,而我的数据库又是通过Hibernate配置文件自动生成的,但是到了服务器,为了数据方便转移,我是用本地数据库生成的sql文件导入的,不是hibernate自动生成的,所以服务器中MySQL里的字段包括数据库名都是小写,但是项目里是大小写合用,而服务器上的MySQL版本是5.7,区分字段的大小写。导致我的HibernateUtil类无法创建,所以报错。于是楼主兴奋地改了错误,没想到项目是可以运行了,但是显示的数据却是乱码。

2、浏览器显示乱码

这可惊呆了楼主,楼主向来都是对编码很严谨,从Java源文件到jsp文件到数据库都是统一使用的UTF-8这还有乱码的道理?于是我查看了MySQL的编码,utf8没错,可怜的楼主又开始了求助之旅,按大神博客查看myslq的servercharset、clientcharset等等,都没问题,最后没法,又回到了Hibernate配置文件,本着更严谨的态度,在jdbc:mysql:///booksmanage语句后面添加了?characterEncoding=utf8,神奇的事情发生了,乱码好了,偷懒害死人,必要的代码一句都不能省,不然在自己电脑上能运行,但是换个版本的mysql就可能出问题,楼主在掉了n根头发之后,艰难的在服务器上发布了自己的项目。




猜你喜欢

转载自blog.csdn.net/qq_40756113/article/details/80774215