Mysql迁移到达梦数据库过程

一、Mysql数据库迁移到达梦

 

 

 

 

 

 

 

 

 

 

 

二、Springboot配置

1、Springboot 引用jar,jar文件目录:dmdbms\drivers\jdbc

2、修改Springboot中yml配置

spring:
  datasource:
    url: jdbc:dm://localhost:5236/qingzhu_eg?clobAsString=1
    username: SYSDBA
    password: SYSDBA
    driverClassName: dm.jdbc.driver.DmDriver #com.mysql.jdbc.Driver
    # 连接池配置
    hikari:
      pool-name: HikariPool
      minimum-idle: 10
      maximum-pool-size: 100
      connection-timeout: 30000
      idle-timeout: 600000
      max-lifetime: 1800000
  jpa:
    show-sql: true
    hibernate:
      ddl-auto: update #none create create-drop update validate
    properties:
      hibernate:
        dialect: org.hibernate.dialect.DmDialect

三、常见问题

1、Mysql迁移需要创建实例时取消勾选数据库大小写敏感

 

2、源数据库字段为POINT类型,迁移报错

 

涉及到geometry类型,达梦数据库中第一次使用geometry类型需要执行几何初始化,否则在设置字段为geometry类型会报错,无效的数据类型。

SP_INIT_GEO_SYS(1);

通过发出下列 SQL 命令确认几何类型已初始化:

SELECT SF_CHECK_GEO_SYS;

3、出现SQL报错为Sql语法有差别,代码中的原生sql都需要根据达梦的语法来进行调整,jpa动态生成的没问题

4、TEXT 类型字段通过默认类型转换为dm.jdbc.driver.DmdbNClob类型在连接后面加固定设置


达梦连接中开启将clob转换成String

url: jdbc:dm://lcoalhost:5236?clobAsString=1

5、达梦数据库查询回来的字段名全变成大写

如果用的是jpa,写的@Query注解,""就要加上转义符号,如下:

select id AS \"id\",name as \"name\" from table

select id AS \"id\",name as \"name\" from table

6、达梦数据库执行报错 -4080: 第1 行附近出现错误:不是 GROUP BY 表达式

修改dm.ini参数GROUP_OPT_FLAG=1,GROUP_OPT_FLAG属于动态,会话级参数,不用重启数据库就可以生效。
设置参数 GROUP_OPT_FLAG=1 语句:

sp_set_para_value(1,'GROUP_OPT_FLAG',1);


再查看GROUP_OPT_FLAG配置参数是否成功:

select para_name,para_value,file_value from v$dm_ini where para_name='GROUP_OPT_FLAG';

MSYQL--DM数据库迁移遇到的区别

MYSQL

DM

原生sql  select * from 表名

 原生sql  select * from 库名. 表名

BIT(1)类型SQL中可以使用true/false

BIT(1)类型SQL中不可以使用true/false,需转成TINYINT(1),或者使用1/0

 DATE_SUB(CURDATE(), INTERVAL 7 DAY) 

DATE_SUB(CURDATE(), INTERVAL 7 DAY) 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值