一、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) |