数据库专题 数据库适配问题--人大金仓数据库适配问题总结(kingbase8)

人大金仓数据库链接配置

这里以springBoot配置文件演示:

spring.datasource.driver-class-name=com.kingbase8.Driver
spring.datasource.url=jdbc:kingbase8://192.168.***.***:54321/数据库名
spring.datasource.username=SYSTEM
spring.datasource.password=SYSTEM
指定分页组件数据库方言
pagehelper.helper-dialect=POSTGRESQL

一般而言,人大金仓使用的数据库类型选择postgre即可

maven依赖(自己创的路径)

	<dependency>
		<groupId>cn.com.kingbase</groupId>
		<artifactId>kingbase8</artifactId>
		<version>8.2.0</version>
	</dependency>

会试着上传对应jar包,看能不能了

activiti 适配问题

这里使用5.21版本的原装activiti jar 包,人大官方虽然提供了修改后的jar,这里可以不用替换,只要配置activiti 时,不论时使用Java代码还是spring配置文件,只要指定数据库类型为 postgre(或者 postgres)就可以解决启动的大部分问题。

这里指出spring配置文件中的修改记录如下:

由于启动时activity不断创建已有表,外键约束等导致启动报错,且我这里可以关闭,所以此处做关闭处理,具体内容见下方内容。

在id为processEngineConfiguration的bean中需要修改的项如下

<property name="databaseSchemaUpdate" value="none" /><!-- 自动建表,自动更新表结构 -->
<property name="jobExecutorActivate" value="false" /><!-- 该参数将启用定时相关的功能 -->
<property name="history" value="none" /><!-- 历史记录保存模式 -->

在id为processEngineConfiguration的bean中新添加的项如下:
下面这一条为适配人大金仓时需要添加的属性,若是oracle,mysql等不需要该条配置。
<property name="databaseType" value="postgres" /><!-- 人大金仓配置项指定数据库类型 -->

当将activity自动建表,定时,历史等关闭时,同时需要添加下面两条新的属性配置:
<property name="dbHistoryUsed" value="false" />
<property name="dbIdentityUsed" value="false" />

修改后的部分整体如下(其他未做修改的地方不做说明):

<property name="databaseSchemaUpdate" value="none" /><!-- 自动建表,自动更新表结构 -->
<property name="jobExecutorActivate" value="false" /><!-- 该参数将启用定时相关的功能 -->
<property name="history" value="none" /><!-- 历史记录保存模式 -->
		
<property name="databaseType" value="postgres" /><!-- 人大金仓配置项指定数据库类型 -->
		
<property name="dbHistoryUsed" value="false" />
<property name="dbIdentityUsed" value="false" />

Mybatis适配

大部分语句使用oracle和mysql的常用语句就可以,使用Oracle语句一般不会出问题,我们国产的数据库这些应该自己做了兼容

注意表冲突SYS_USER(可能出现登录问题)

如果你自己的数据库表中存在了数据库本身使用的默认表(重名),而且没有指定是在你自己的模式下(也就是public模式下),那么查询时就会查数据库自己本身的表而不是你自己导入的表。

例如:SYS_USER 这是数据库本身的表,如果重名,需要指定一下模式
例如:

一般我们的业务表都会放到pulic中,链接时也是默认链接public下的内容。当然你也可以自己创

放入到public中,则做如下处理:

将所有表名为SYS_USER的地方修改为"PUBLIC".“SYS_USER” 指定模式为public,再次查询时就可以避免查询到数据库本身的表。

数据库创建和还原时的注意点

在数据库创建时会自动生成两张表如截图所示:
在这里插入图片描述
需要额外注意

创建后,数据库字段长度可能需要修改,这里挺难受的
存储汉字时character varying长度翻倍
GBK2倍 UTF-8 3倍
和原有Oracle 和MySQL长度判断有一定差异,可能改的地方比较多,没办法一点点来吧。

问题排查

有时候不好找问题可以到人大金仓数据库安装目录下的data文件夹,找到sys_log 查看打印的报错日志,有助于排查问题。

数据库适配一般会出现的问题原因

字段名与数据库自身的关键字重合 导致sql执行失败

数据库本身缺失一些函数导致函数执行失败

数据库本身使用的表与自己所使用的表冲突,尤其注意SYS或者SYSTEM等表的命名方式尽量避免

不同数据库对字段的大小写敏感程度不同,可能导致无法识别个别字段,需要字段大小写转化

数据库方言问题可能需要指定

人大金仓linux安装时需要注意,自己创建的文件夹目录一定要将所属权给安装的用户

也就是你自己创建的用户

具体指令如下:
这里假设我创建了一个普通用户 kingbase 那么语句如下

chown kingbase:kingbase filename(修改所属的文件)

修改后在对应目录下使用 ls -all 可以查看修改后的文件的所属和操作权限

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值