NCAOS源码修改--适配PostgreSQL数据库

sql初始化: https://blog.csdn.net/SdWangTy/article/details/109184316

概述

nacos现在除了自身的内嵌数据库外,只支持mysql数据库,由于工作需要,需要将nacos连接到postgresql数据库,查看源码之后发现源码中只兼容了mysql数据库,需要对源码进行修改。刚毕业的小白,有什么错误欢迎大佬指点!!!

修改思路

首先修改配置项,将配置mysql的位置加入判断条件,兼容postgresql;其次修改判断语句,源码中有许多判断是否使用mysql的位置,如没有用mysql且单机模式启动,则会加载内嵌数据库,此处加上postgresql的判断条件;最后,修改nacos中mysql与postgresql在sql语句方面的不同,例如postgresql用``包裹字段会报错,不支持limit m,n的写法。

nacos版本:1.1.4
package com.alibaba.nacos.config.server.service

主要内容位于这个包内,下面按照每个修改的类进行描述

BasicDataSourceServiceImpl

对mysql的加载位于这个类中,由于想要动态判断加载mysql或postgresql驱动,删掉了static代码块,在reload方法中加入了如下代码

if (env.getProperty("spring.datasource.platform").equals("postgresql")) {
   
	JDBC_DRIVER_NAME = DEFAULT_POSTGRESQL_DRIVER;
	log.info("Use PostgreSQL as the driver");
}else {
   
	try {
   
		Class.forName(MYSQL_HIGH_LEVEL_DRIVER);
		JDBC_DRIVER_NAME = MYSQL_HIGH_LEVEL_DRIVER;
		log.info("Use Mysql 8 as the driver");
	} catch (ClassNotFoundException ex) {
   
		log.info("Use Mysql as the driver");
		JDBC_DRIVER_NAME = DEFAULT_MYSQL_DRIVER;
}

其次下面加入了if else语句,将原本的for循环放到了else中,if中加入判断条件,若是postgresql数据库,复制一份mysql的加载过程,将其中 db. + i 等修改为自己配置文件中的配置即可。

if (JDBC_DRIVER_NAME == DEFAULT_POSTGRESQL_DRIVER) {
   
				String val = null;

				BasicDataSource ds = new BasicDataSource();
	
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 22
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值