背景:因为业务需求,需要整个项目除了适配oracle和mysql后还需要适配PostgreSQL,在此背景下就出现了一系列的问题。


踩坑一:databaseId

连接数据库后启动发现某些查询报错传入的sql参数是空,经过反复排查定位到对应的MyBaits的xml文件,我贴出原始的文件

Oracle数据库升级PostgreSQL 后的踩坑记录(一)之databaseId_oracle

文件中判断databaseid是mysql还是oracle来实现数据库语法的差异性,例如该查询语句为了防止未传入参数全库查询导致数据库cpu和io飙升而进行限制只返回1000条,然而上面databaseid这个参数由于PostgreSQL数据库返回的是PostgreSQL 导致走了一个空查询条件。

然后在xml中添加了postgresql最后发现还是没有匹配

Oracle数据库升级PostgreSQL 后的踩坑记录(一)之databaseId_oracle_02

最后跟踪代码找到了一个枚举类,配置了参数就映射否则返回空

Oracle数据库升级PostgreSQL 后的踩坑记录(一)之databaseId_PostgreSQL_03


Oracle数据库升级PostgreSQL 后的踩坑记录(一)之databaseId_pgsql_04

Oracle数据库升级PostgreSQL 后的踩坑记录(一)之databaseId_pgsql_05

修改了该类后让PostgreSQL映射成oracle该空sql报错解决。