docker安装达梦数据库最佳实践

达蒙数据库

数据库安装部署

下载地址:产品下载 | 达梦数据库

安装博客地址:安装前准备 | 达梦技术文档

到官网docker部署那一章节,下载镜像tar包,上传到服务器上后,运行下面的命令
docker安装启动脚本:

docker run -d -p 5236:5236 \
--restart=always \
--name dm8_01 \
--privileged=true \
-e CASE_SENSITIVE=0 \
-e UNICODE_FLAG=1 \
-e LENGTH_IN_CHAR=1 \
-e PAGE_SIZE=16 \
-e LD_LIBRARY_PATH=/opt/dmdbms/bin \
-e INSTANCE_NAME=dm8_01 \
-v /data/dm8_01:/opt/dmdbms/data \
dm8_single:v8.1.2.128_ent_x86_64_ctm_pack4

说明:

  • CASE_SENSITIVE=0 设置大小写不敏感

  • LENGTH_IN_CHAR=1 VARCHAR 类型对象的长度以字符为单位

  • UNICODE_FLAG 字符集 (0),可选值: 0[GB18030], 1[UTF-8], 2[EUC-KR]

备注:安装好达梦数据库后,需要新建库名、新建用户、分配这个用户的权限和所拥有的库

mysql迁移到达梦

  • dm.ini修改兼容参数

    在迁移数据之前,需要修改 DM 数据库参数,修改兼容参数为兼容 MySQL 数据库 COMPATIBLE_MODE=4 ,重启数据库服务使其生效即可

  • 迁移工具设置映射字段修改

    数据类型映射 -> MySQL/DM -> 源数据类型名(DOUBLE)映射到 目的数据类型名(VARCHAR)

java适配

添加驱动

此驱动可直接网络下载到本地maven仓库

<!-- 添加 达梦数据库 驱动-->
<dependency>
    <groupId>com.dameng</groupId>
    <artifactId>DmJdbcDriver18</artifactId>
    <version>8.1.2.79</version>
</dependency>

jpa服务

eventappfileupload服务

  1. 进入到本地的安装目录 dmdbms8/drivers/jdbc/dialect,上传对应版本的方言包到本地仓库
mvn install:install-file -DgroupId=com.dameng -DartifactId=DmDialect-for-hibernate -Dversion=5.4 -Dpackaging=jar -Dfile=DmDialect-for-hibernate5.4.jar
  1. 配置文件添加对应的方言配置

    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.DmDialect
    spring.jpa.database-platform=org.hibernate.dialect.DmDialect
    

mysql和达梦数据库的差别

达梦开发指南

https://eco.dameng.com/document/dm/zh-cn/sql-dev/practice-single-table.html

关键字

  • 查询字段不能是admin、damain、order,否则报错

  • 达梦不支持LocalDateTime,需要适配(两种方案)

    • 第一种:common包中添加适配类

    • 第二种:使用最新的达梦在线驱动依赖包并去掉druid依赖

语法兼容

  1. 创建表的时候,不支持在列的后面直接加 comment 注释,使用 COMMENT ON IS 代替,如:

     COMMENT ON TABLE xxx IS xxx
     COMMENT ON COLUMN xxx IS xxx
    
  2. 字段不支持反引号``包裹(mysql可兼容)

  3. 查询字段不允许双引号包裹,如,SELECT vc_direct AS "direct"(mysql可兼容)

  4. like "%xxx%" 会报错,使用单引号包裹like '%xxx%'(mysql可兼容)

  5. date_sub(date,INTERVAL expr type), expr 在达梦中需要加单引号(mysql可兼容)

    如:date_sub(now(),interval '6' month)

  6. 达梦数据库保错‘-2685:试图在blob或者clob列上排序或比较’,达梦数据库对大字段排序默认是会报错的,需要修改配置,执行一下语句修改即可
    sp_set_para_value(1,‘ENABLE_BLOB_CMP_FLAG’,1);

  7. if语句不支持带有表达式的值(如:if(?3 is not null, direct = ?3, 1 = 1)),所以需要转换成
    if(?3 is not null, if(direct = ?3, 1, 0), 1)这样;(mysql可兼容)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木一番

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值