oracle数据库转国产化数据库KingbaseES-V8(记录雷区)

最近公司需要跟一家公司对接系统,可以部署在第三方服务器,但是那边的服务器要求使用正版软件,所以,我们开发用的oracle就不能使用了,后来找到了一款国产数据库(人大金仓)。安装,迁库什么的,都没遇到什么问题。

1.但是在连接库的时候,碰到过这样一个问题:

当时我是jdbc连接,是这么配置的,切我的库名称叫FLYY3

jdbc.driverClassName=com.kingbase8.Driver
jdbc.url=jdbc:kingbase8://ip:端口/SAMPLE
jdbc.username=SYSTEM
jdbc.password=9aba2f2ecb9a3508e3c0c70346e91e0d

但是我在数据库中是这么设置的:在SAMPES下面,添加了一个FLYY3的库,本来以为上面的jdbc配置可以直接找到对应的表,但是并不是,如果这么配置的话,代码都要修改成flyy3.表名,才可以。

后来,我想啊,不应该这么玩啊,不然改代码改动太大了。后来查了一些资料。

oracle数据库转国产化数据库KingbaseES-V8(记录雷区)_第1张图片

发现如下:当对象创建时没有指定一个特定目标模式, 它们将被放置在search_path中第一个合法
模式中。 如果搜索路径为空将报告一个错误。
这个参数的缺省值是"$user", public。 这种设置支持一个数据库(其中没有用户拥有
私有模式, 并且所有人共享使用public)

所以:重新建立一个FLYY3的库,把所有的表结构和数据都迁移到public下面,这样就可以直接用

如下:

jdbc.driverClassName=com.kingbase8.Driver
jdbc.url=jdbc:kingbase8://ip:端口/FLYY3
jdbc.username=SYSTEM
jdbc.password=9aba2f2ecb9a3508e3c0c70346e91e0d

oracle数据库转国产化数据库KingbaseES-V8(记录雷区)_第2张图片

这样启动服务,就不会报错。

2.还有一个雷区,之前在写sql时,用了一个正则表达式函数fltk.mc LIKE regexp_replace(#fc.mcgjz# || '%','[()]') 

但是在人大金仓这个语法中,会报错,需要改成这种regexp_replace(#fc.mcgjz# || '%','[()]','') 

你可能感兴趣的:(国产化数据库,数据库,java,oracle,jdbc)