MySql5.7迁移达梦数据库

1. 下载安装达梦数据库Windows本地测试环境

移步链接

2. 数据迁移

2.1 达梦创建表空间

新建表空间: 

参数:

文件路径填写对应的DBF格式文件,比如数据库名字为test,那么可以在D盘创建一个名字为test.DBF的文件,其他保持不变

新建用户

填写用户名,密码,并将表空间选择刚才创建的表空间,索引选项和表空间保持一致

所属角色和系统权限可以全选

注意: 创建角色时可能会出现错误:点击确定后再此修改此用户的系统权限即可,确保能赋给该用户系统权限 👇



这时右键刷新就可发现出现了对应表空间的模式 ↓↓↓

2.2 数据迁移开始:

新建工程:名字随意


新建迁移 名字随意


点击下一步

选择 MySQL ===> DM ,点击下一步

填写MySQL数据库对应的密码,点击测试

注意:在此处可能出现数据库链接失败的情况:

解决方法: 尝试在点击自定义URL,在最后拼接上 &useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true 

若不行,尝试使用本地驱动包 👇

填写达梦数据库口令(密码):

配置迁移选项,在这一步可以勾选 ◻保持对象名大小写,避免迁移之后数据库表名全部成为大写的情况

选择对应的数据库,并配置目的模式名称,取消掉创建模式,剩余选项根据实际情况选择

选择需要迁移的表格

点击完成

注意:若迁移过程中有约束或索引迁移失败,需要手动去维护索引信息 👇

3 JAVA (SpringBoot) 配置

3.1 添加jar包

DmJdbcDriver18.jaricon-default.png?t=N7T8https://download.csdn.net/download/LXD_CSDN/88515655?spm=1001.2014.3001.5501

3.2 填写资源引用

systemPath标签请填写你放置对应jar包的位置

      <!--达梦数据库驱动-->
        <dependency>
        <groupId>com.dm</groupId>
        <artifactId>DmJdbcDriver18</artifactId>
        <version>18</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/lib/DmJdbcDriver18.jar</systemPath>
        </dependency>

配置达梦数据源:


#    达梦数据源
spring:
 datasource:
    url: jdbc:dm://127.0.0.1:5236?schema=TEST
    username: TEST
    password: FAAVDACDSFAF
    driver-class-name: dm.jdbc.driver.DmDriver
# PageHelper分页插件
pagehelper:
  helperDialect: oracle
  supportMethodsArguments: true
  params: count=countSql

此时,就可以启动项目,修改报错的SQL语句了

4. 注意事项

在这里记录几个SQL报错的点:

4.1 distinct 与 order by 的不兼容问题

例如: SQL语句: select distinct username from student order by age

可能报错: ORDER BY项不在DISTINCT查询项中


解决方案

运行语句:   ALTER SYSTEM SET 'COMPATIBLE_MODE'=4 SPFILE;

进入主页:

点击DM服务查看器

重启实例

4.2 `号在达梦中不合法

在MySQL中:  ` 这个符号常用在数据库的表名,列名的标注,但是在大梦中此符号不合法,注意删除

4.3 数据类型的判等问题

在mysql中,varchar类型的值, 在sql书写的where条件中可以与 数值型类型比较

例:  select username from student where username = 123

达梦中必须在123上加上单引号

例: select username from student where username = '123'


int类型的值可以当作布尔类型的值使用

mysql中假如有一字段 del_flag 为 tinyint类型 为1表示正常,0为删除,sql可以写为

例:  select username from student where del_flag

达梦中则需要写上判等条件

例:  select username from student where del_flag = 1


相似的还datetine 在mysql中可以与空字符串判断,达梦中则不可以

4.4 dbType异常问题

在项目启动过程中,若使用了dynamic 动态数据源,可以修改 

spring.dynamic.database.druid.filters = stat

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值