达蒙数据库使用
镜像下载
docker run -d --name dameng \
--restart always \
-p 5236:5236 \
--network free \
-e PAGE_SIZE=16 \
-e LD_LIBRARY_PATH="/opt/dmdbms/bin" \
-e EXTENT_SIZE="32" \
-e BLANK_PAD_MODE="1" \
-e LOG_SIZE="1024" \
-e UNICODE_FLAG="1" \
-e LENGTH_IN_CHAR="1" \
-e INSTANCE_NAME="dm8_01" \
--memory 1024m \
-v $(pwd)/opt_dmdbms_data:/opt/dmdbms/data \
dm8_single:dm8_20230808_rev197096_x86_rh6_64
docker-compose.yml
dameng:
# default pwd. SYSDBA / SYSDBA001
image: dm8_single:dm8_20230808_rev197096_x86_rh6_64
container_name: dameng
ports:
- "5236:5236"
networks:
- free
environment:
PAGE_SIZE: 16
LD_LIBRARY_PATH: "/opt/dmdbms/bin"
EXTENT_SIZE: "32"
BLANK_PAD_MODE: "1"
LOG_SIZE: "1024"
UNICODE_FLAG: "1"
LENGTH_IN_CHAR: "1"
INSTANCE_NAME: "dm8_01"
restart: always
mem_limit: '1024m'
volumes:
- "./dameng/opt_dmdbms_data:/opt/dmdbms/data"
官方镜像里安装了一些无用组件,有空重新构建一版(底包使用ubuntu)。
空间模块扩展支持
参考https://zhuanlan.zhihu.com/p/592720046
执行即可。
-- SP_INIT_GEO_SYS(1);
SP_INIT_GEO2_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;
关联更新
最新版是支持关联更新的,旧版不支持。
UPDATE table_nameA tna
SET tna.columA = (
SELECT columB FROM table_nameB LIMIT 1
)
允许将显式值插入表的自增列中
set identity_insert table_name on;
教程
https://blog.csdn.net/zhdong00/article/details/122936928
https://blog.csdn.net/weixin_39724194/article/details/127632374
如有错漏,欢迎指正!谢绝转载。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)