达蒙数据库使用

发布时间 2023-09-08 17:50:40作者: 一年`

镜像下载

链接

docker run -d --name dm8_01 \
--privileged=true \
-p 5236:5236 \
-e PAGE_SIZE=16 \
-e LD_LIBRARY_PATH=/opt/dmdbms/bin \
-e INSTANCE_NAME=dm8_01 \
-m 2048m \
-v $(pwd)/opt_dmdbms_data:/opt/dmdbms/data \
dm8_single:dm8_20230808_rev197096_x86_rh6_64

官方镜像里安装了一些无用组件,有空重新构建一版。

空间模块扩展支持

参考https://zhuanlan.zhihu.com/p/592720046
执行即可。

SP_INIT_GEO_SYS(1);

数据库安装

https://blog.csdn.net/songdancer/article/details/108793190
https://blog.csdn.net/weixin_47343544/article/details/128840070

创建LEARN数据库并赋予权限给ROOT用户,和mysql一样,方便连接。

CREATE SCHEMA "LEARN" AUTHORIZATION "ROOT";

关闭登陆时SSL,需要修改dm.ini文件,重启生效。

ENABLE_ENCRYPT = 0

集成springboot配置

安装文件自带驱动,支持LocalDateTime,可解包查看实际版本。
参考 https://zhuanlan.zhihu.com/p/375455795

<!-- 达梦数驱动 搭配MP测试过,支持LocalDateTime-->
<dependency>
    <groupId>com.dameng</groupId>
    <artifactId>DmJdbcDriver18</artifactId>
    <version>8.1.2.141</version>
</dependency>
  datasource:
    url: "jdbc:dm://localhost:5236/SYSDBA"
    username: "SYSDBA"
    password: "SYSDBA001"
    driver-class-name: dm.jdbc.driver.DmDriver

遇到关键字冲突,字段可以加双引号,表名必须更换。

测试使用的版本号

<spring-boot.version>3.0.2</spring-boot.version>
<spring-cloud.version>2022.0.0</spring-cloud.version>
<spring-cloud-alibaba.version>2022.0.0.0</spring-cloud-alibaba.version>
<mybatis-plus.version>3.5.3.1</mybatis-plus.version>

CTE查询

WITH cte(c_id, c_class_id, c_class_pid, c_name) AS (
    SELECT c_id, c_class_id, c_class_pid, c_name
    FROM T_SYS_CLASS base WHERE C_DB_STATUS = 0 AND base.c_id = 1
    UNION ALL
    SELECT tmp.c_id, tmp.c_class_id, tmp.c_class_pid, tmp.c_name
    FROM T_SYS_CLASS tmp JOIN cte ON tmp.c_class_pid = cte.c_class_id AND tmp. C_DB_STATUS = 0
)
SELECT c_id, c_class_id, c_class_pid, c_name FROM cte;

允许将显式值插入表的自增列中

set identity_insert table_name on;