讲一讲mysql5.6升级到mysql8.0 之后,遇到的常规问题以及非常规问题的解决方案

这个问题解决有一段时间了,但是想想解决时遇到的各种喜悦与绝望,觉得还是挺值得记录下来的。

       上个星期,老板(也是技术出身)决定要使用mysql 8.0 的json函数来操作数据,于是他去网上下了个mysql 8.0示例,将原来mysql5.6 的数据移植到了新的8.0数据库中,解决了外部访问8.0数据库的权限问题后,就把接下来的与原项目的整合问题交给我了。作为一个热血的开发新手,老板交下来的任务,我总是很愉快的去解决的。首先需要说明,公司的项目有四个,四个项目使用的都是同一个数据库,其中有两个项目是标准的maven工程,一个项目Java web动态工程,还有一个项目是普通的Java工程。

        开始的时候,我也通过百度查找了很多博客,然后参考这篇博客: Java连接mysql中遇到的一些问题及解决方法 ,强制更新了maven版本库,发现这两个maven项目很爽快的就跑起来了。另一个Java动态工程,依照前面两个工程的修改步骤,也能正常连接和使用。但是到了最后一个 普通的Java工程时,套路就不管用了。

如下图,我的数据库驱动原来是 1.0.15 的,后来提示报错,现在升级到1.1.10:

 

mysql驱动也升级到了8.0.11,如下图:

 

配置文件也做了修改:

#测试(mysql 8.0)
jdbc.url=jdbc:mysql://你的ip:8080/mydb?useUnicode=true&characterEncoding=utf-8&serverTimezone=Hongkong&useSSL=false
jdbc.username=root
jdbc.password=10086

 

还有驱动地址也改了:

但是好死不死,控制台还是打印错误了,说的是无法创建bean对象:

 

        被卡了很久,试了很多方法,包括更改了本地jdk的版本,不管是升级到jdk1.7 还是 使用1.8 ,都依旧报错,几乎要绝望了。后来我冷静分析了起来,首先确定我前面两个maven项目和一个java web工程都是可以跑起来的,原来的四个项目用的都是jdk1.7,都跑在同一个eclipse上,所以不会是jdk版本的问题。然后再看mysql的配置文件,也是直接copy过来的,也没有问题,而mysql相关的jar包,都是从那三个能正常跑起来的项目中拷贝过来的,所以也不会是引错mysql的jar包导致的。然后再看这个报错,复制这个错误虽然无法直接百度找到答案,但是从错误上来看,大概意思是创建某些bean 对象时失败了,也就是这个错误是和spring相关的错误,然后我突然想到,会不会是和spring的jar包的版本有关。我于是将这个普通java项目里spring相关的jar包都换成了其它三个能够正常运行的项目里的jar包版本。如下图:

原来普通java项目里spring里jar包版本如下:

 

其它三个能正常运行的项目的jar包版本如下:

 

替换成功后重新build-path,点击运行,发现错误就变成了:“java.lang.UnsupportedClassVersionError: com/mysql/cj/jdbc/Driver : Unsupported major.minor version 52.0”:

 

百度了一下,发现是我的jdk编译器版本太低了,于是使用了jdk1.8,操作如下:

 

 

至此,问题解决。

       mysql5.6 升级到mysql8.0后的相关修改网上有很多博客,但是却没人说过 这个mysql驱动包升级后,可能该项目里其它的jar包也会受影响,原来mysql5.6加上5.6的驱动时,我原来的项目能跑,因为刚好与spring的版本兼容,这时候,大家都是底层老百姓,也就是都穷,谁也没资格瞧不起谁,所以可以愉快的一起玩耍。但是突然有一天,mysql 5.6 升级到了8.0了,于是我们很自然的会把目光放到mysql的驱动是否兼容上,就算有其它问题,也是会往msyql那方面想,但是却忽略了以前的穷兄弟 spring依旧还很穷,说白了大家不再是一个圈子里的人,没办法再在一起玩。要想一起玩,就得把spring的jar包也给升级了,这样大家又都到了同一个圈子,就能继续一起愉快玩耍了啊。

 

  • 16
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值