修改SpringCloud Alibaba nacos1.1.4版本,使其支持mysql8

问题描述:从官网下载完nacos,配置完application.properties持久化信息后,启动nacos报错:
Caused by: java.lang.RuntimeException: Nacos Server did not start because dumpservice bean construction failure :
StatementCallback; bad SQL grammar [SELECT max(id) FROM config_info]; nested exception is com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘OPTION SQL_SELECT_LIMIT=50000’ at line 1
截图如下:
在这里插入图片描述
原因:nacos内置的mysql版本和mysql的版本不匹配
解决方法:修改nacos内置的mysql版本,使其支持高版本的mysql。或者降低mysql的版本(不推荐)
当前环境信息:
平台:Windows10
nacos版本:1.1.4,nacos-server-1.1.4.zip
mysql版本:8.0.20
1.1.4 nacos默认的mysql版本,如下图:
在这里插入图片描述
解决方法:
1、下载1.1.4nacos的源码包
下载地址:https://github.com/alibaba/nacos/releases/tag/1.1.4
在这里插入图片描述
2、解压,就该最外层pom.xml中mysql的版本,我本地的mysql的版本是8.0.20,故此处修改为8.0.20

        <dependency>
            <groupId>mysql</groupId>
            <artifact>mysql-connector-java</artifactId>
            <version>8.0.20</version>
        </dependency>

在这里插入图片描述
3、修改naming子模块“src\main\java\com\alibaba\nacos\naming\healthcheck”路径下的MysqlHealthCheckProcessor.java,修改内容为第24行。
修改前:import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
修改后:import com.mysql.cj.jdbc.MysqlDataSource;
在这里插入图片描述
4、由于mysql8及其以上版本需要带时区,所以还需要修改 console模块“src\main\resources\META-INF”路径下的nacos-default.properties文件(41、42行)
db.url.0=jdbc:mysql://11.162.196.161:3306/diamond_devtest?serverTimezone=GMT%2B8&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.url.1=jdbc:mysql://11.163.152.91:3306/diamond_devtest?serverTimezone=GMT%2B8&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true

5、到这里差不多了,重新打包(在根目录下,打包需要一段时间,耐心等待)
D:\资料\尚硅谷\周阳_springcloud\springcloud-v2\nacos-1.1.4>mvn -Prelease-nacos clean install -U
在这里插入图片描述
打包成功显示的信息:
在这里插入图片描述
6、打包后的jar包位置:distribution\target
在这里插入图片描述
新jar包中mysql的版本为8.0.20:
在这里插入图片描述

7、修改新包的application.properties文件
注意db.url.0要添加时区:在db.url.0中添加时区 serverTimezone=GMT%2B8
完整配置如下:
spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?serverTimezone=GMT%2B8&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root
8、启动测试
在这里插入图片描述
nacos web界面展示:
在这里插入图片描述
参考网站:
https://www.cnblogs.com/gyli20170901/p/11245270.html?spm=a2c4e.10696291.0.0.1c3319a4HMhyLf
可能遇到的问题:在github上下载nacos时可能会碰到下载缓慢的问题,我已经把重新打完包后的支持mysql8.0.20的nacos上传至百度网盘了,源码也包含,如果自己想练手改配置重新打包的,任君选择。
百度网盘地址:https://pan.baidu.com/s/1CXzqaJk2AfZYg5e7_i345Q
提取码:xe81
备注:永久有效

题外话:作为一个技术网站,csdn上的个别人不知道怎么想的,动不动下载个东西都要积分、要C币、要充值!GitHub、SpringCloud Alibaba、SpringCloud、Apache等众多优秀的开源网站人家找我们要积分了吗?有些人也是拿着别人的东西抄一抄、改一改,然后上传到csdn,就开始要求别人下载付积分,也是醉了。。。。。,技术本就是开源的(哈哈,公司代码除外),共享才能繁荣发展,真搞不懂某些人是咋想的,我的理念是共享知识、共享开发中遇到的坑,并总结出来,以便让后来碰到这种问题的人少走弯路,坚决不收积分不收费。如果这边文章您感觉什么地方有问题,可以在评论区评论或者私信我,如果这篇文章帮助到了你,请点赞收藏~

猜你喜欢

转载自blog.csdn.net/HelloWorld20161112/article/details/108777599