NutzCN Logo
精华 人大金仓数据库的集成
发布于 547天前 作者 大鲨鱼 2762 次浏览 复制 上一个帖子 下一个帖子
标签: nutzwk

BudWk 框架的表和SQL是不区分大小写的,人大金仓兼容模式中只有oracle可以设置不区分大小写,所以选用oracle兼容模式。

  • nutz.1.r.70-SNAPSHOT 版本

配置修改

  • 引入驱动包
        <!-- kingbase8 -->
        <dependency>
            <groupId>com.dm</groupId>
            <artifactId>DmJdbcDriver</artifactId>
            <version>8.6.0</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/lib/kingbase8-8.6.0.jar</systemPath>
        </dependency>
  • jdbc配置
jdbc:
  driver: com.kingbase8.Driver
  url: jdbc:kingbase8://127.0.0.1:54321/budwk?useUnicode=true&characterEncoding=utf-8
  username: budwk
  password: "@#budwk"
  validationQuery: select 1
  maxActive: 1
  testWhileIdle: true
  connectionProperties: druid.stat.slowSqlMillis=2000
  defaultAutoCommit: true

sys_user/sys_config 等表与人大金仓系统表冲突的解决

人大金仓基于PostgreSQL改造,而非oracle,没有做系统表的隔离,哪怕使用不同表空间、不同模式,select * from sys_user 还是能查到它内置的表,通过修改 search_path 可以设置优先级,但如果让budwk程序初始化建表,因 nutz建表之前要判断表是否存在,那么它内置的表是存在的,会导致初始化失败,解决方法:
* 修改 Sys_user.java 加上模式前缀

@Table("public.sys_user")

  • 修改自定义sql用到sys_user的地方,增加模式前缀

select * from public.sys_user

4 回复

禁用除创建表之外的其他功能,如 migration、add等

database:
  enable: true
  ig:
    snowflake: true  #是否启用雪花主键
  table:
    create: true      #是否自动建表 默认false
    migration: false   #是否自动变更 默认false
    add: false         #变更是否添加列 默认false
    check: false
    delete: false
    package:          #相关实体所在包
      - com.budwk.app
<groupId>com.dm</groupId>
<artifactId>DmJdbcDriver</artifactId>

写错了,纠正一下:

<groupId>com.kingbase8</groupId>
<artifactId>kingbase8Driver</artifactId>

人大金仓jdbc 把databaseProductName写死为 KingbaseES 了(ps:还不如达梦,好歹做了下判断),所以目前:
dao.getJdbcExpert().getDatabaseType() 值为ORACLE

已经给他们反馈了问题,如果下个驱动版本支持 databaseProductName 自定义,那么:
url 可以配置 databaseProductName=kingbasepsql
dao.getJdbcExpert().getDatabaseType() 值为PSQL

如要支持psql兼容模式,当前可参考实现:
https://nutz.cn/yvr/t/7d6orfm3okji3rlo99375f0iqm

添加回复
请先登陆
回到顶部