Mysql迁移DM国产达梦数据库完整步骤记录

 更新时间:2024年07月06日 11:52:10   作者:重生1993  
最近工作中用到国产数据库达梦,简称DM,下面这篇文章主要给大家介绍了关于Mysql迁移DM国产达梦数据库完整步骤的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下

甲方爸爸要求,信创的机器(arm架构),现在需要迁移mysql到达梦,先在本地(x86-64架构)模拟下咯!

1 快速迁移

1.1 已有用户的情况下迁移

用户:ESO

模式:ESO

不理解账号创建的同学,先直接跳转章节3.3部分查看。

不会安装达梦数据库的同学,移步本人其他文章查看(Windows版,Docker防踩坑版、信创版)

1.1.1 打开迁移工具

1.1.2 创建工程

右击空白处,新建

1.1.3 新建迁移

1.1.3.1 选择迁移方式

MySql迁移DM

1.1.3.2 配置数据源

输入你的mysql配置后,刷新,选择要迁移的数据库名

1.1.3.3 配置目的

输入你要迁入的达梦数据库的配置

1.1.3.4 迁移选项

先用默认

保持对象名大小写,不勾选,达梦默认表名和字段名都大写

1.1.3.5 指定模式

1.1.3.6 指定对象

全选你要迁移的表

1.1.3.7 审阅任务

点击完成开始迁移

1.1.3.8 迁移完成

1.1.4 查看迁移后的表

1.1.4.1 登录新用户ESO

1.1.4.2 查看表数据

1.1.4.3  spring连接配置

1.2 无用户的情况下迁移

和1.1操作流程一样,但是账号用的是SYSDBA;

迁移后的表,会自动新建一个模式ESO,但是是属于SYSDBA用户的,也没有独立的表空间;

2 迁移后的报错

2.1报错内容

无效的表或视图名[SYS_USER]
; 第3 行附近出现错误:
无效的表或视图名[SYS_USER]; nested exception is dm.jdbc.driver.DMException: 第3 行附近出现错误:
无效的表或视图名[SYS_USER]] with root cause

dm.jdbc.driver.DMException: 第3 行附近出现错误:
无效的表或视图名[SYS_USER]
    at dm.jdbc.driver.DBError.throwException(DBError.java:684)

提取关键信息

  • 无效的表或视图名[SYS_USER]
  • ### SQL: SELECT  *  FROM sys_user     WHERE (username = ?)

把报错中的sql,在达梦数据库里执行一遍

发现该sql语句是报错的;

2.3 分析报错

首先,达梦数据库安装时,选择的是大小写敏感,所以查看达梦的表名是否大写

所以,sql语句里必须写成:

SELECT  *  FROM  "SYS_USER"

还是报错,原因是,当前表所在的模式(理解为mysql的数据库)是ESO,我们登录账户是SYSDBA,两者不一致时,需要写上模式作为前缀。若一致则不需要写(用ESO账号登录时)

正确sql如下

select  *  from "ESO"."SYS_USER"

2.3暴力解决Java代码中问题

2.3.1实体类Entity解决方式

通过@TableName()注解,指定表名。

@TableName("sys_user")   改成   @TableName("ESO.SYS_USER")

2.3.2mapper里的原始sql解决方式

报错内容:

首先确认这里的实体类SysUserTokenEntity已经修改兼容好了。

“注意,过滤只看.java文件”

然后过滤只看.xml文件,去排查mapper。

修改完成如下:

2.3.3其他手动sql解决方式

  • 把表名qrtz_手动改成大写QRTZ_;
  • 前缀加上 ESO.
  • 完整:"ESO.QRTZ_"

2.4破釜沉舟解决问题

        暴力解决,需要一个个的去兼容修改,适合代码量不多的情况,很麻烦很费时间,还影响原来的代码;

        我们采用章节3进行可视化重装,实现指定用户和模式以及大小写不敏感;需要用到章节1的快速迁移来实现。

3 可视化重装 for Windows

3.1删除实例服务

3.1.1停止实例服务

打开DM库服务查看器

右击停止数据库实例服务

3.1.2删除数据库服务实例

打开DM数据库配置助手

选择数据库

确认删除

3.2 创建数据库实例

3.2.1 新建

3.2.2 模板

默认即可

3.2.3 数据实例保存目录

一般默认即可

3.2.4 数据库名配置,默认即可

3.2.4 初始化参数(丝滑迁移的关键1)

注意时区、字符集编码、大小写敏感

其中,大小写敏感必须去掉,

这样spring工程代码适配时,不需要暴力的去一个个转换成大写了

完成

3.2.5 再次启动服务

3.3 操作数据库

3.3.1 新建连接

账号密码一样

SYSDBA/SYSDBA

3.3.2 新建表空间

红框部分自己写

文件路径MY_ESO\MY_ESO.DBF不可以存在,否则会创建失败!

完整路径:E:\dmdbms\data\MY_ESO\MY_ESO.DBF

创建成功后,可以看到MY_ESO.DBF文件自动生成。

查看新建的表空间

3.3.3 创建用户(丝滑迁移的关键2)

新建用户ESO,会自动创建模式(类似数据库)ESO;

这样,原本的spring java代码,就不需要手动的去加上ESO.前缀

右击管理用户,新建

3.3.4 常规设置

账号密码设置、关联表空间和索引表空间、散列算法

ESO/12345678

创建成功

密码长度太短会报错

3.3.5 授权

3.3.6 模式

新建用户成功后,会生成一个和用户名同名的模式

模式里面才是实际对表的增删改查等操作

总结

到此这篇关于Mysql迁移DM国产达梦数据库完整步骤的文章就介绍到这了,更多相关Mysql迁移DM国产达梦数据库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 分析MySQL中索引引引发的CPU负载飙升的问题

    分析MySQL中索引引引发的CPU负载飙升的问题

    这篇文章主要介绍了分析MySQL中索引引引发的CPU负载飙升的问题,文中提到了独立索引所带来的巨大CPU负担,以提醒在MySQL中使用索引要注意CPU负载的问题,需要的朋友可以参考下
    2015-05-05
  • Mysql分区表和普通表互转的实现示例

    Mysql分区表和普通表互转的实现示例

    本文主要介绍了Mysql分区表和普通表互转的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-02-02
  • 详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑

    详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑

    datetime和timestamp这两种类型都是用于表示年月日时分秒格式的数据,那么他们有那么区别,本文就详细的介绍一下MySQL timestamp和datetime坑,文中通过示例代码介绍的非常详细,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • MYSQL SQL查询近7天一个月的数据的操作方法

    MYSQL SQL查询近7天一个月的数据的操作方法

    这篇文章主要介绍了MYSQL SQL查询近7天一个月的数据的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • MySQL连表查询分组去重的实现示例

    MySQL连表查询分组去重的实现示例

    本文将结合实例代码,介绍MySQL连表查询分组去重,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • mysql 8.0.12 安装配置方法并修改密码

    mysql 8.0.12 安装配置方法并修改密码

    这篇文章主要为大家详细介绍了mysql 8.0.12 安装配置,及修改密码的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • MySQL中实现行列转换的操作示例

    MySQL中实现行列转换的操作示例

    在 MySQL 中进行行列转换(即,将某些列转换为行或将某些行转换为列)通常涉及使用条件逻辑和聚合函数,本文给大家介绍了MySQL中实现行列转换的操作示例,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2024-06-06
  • mysql5.7.21安装配置教程

    mysql5.7.21安装配置教程

    这篇文章主要为大家详细介绍了mysql5.7.21安装配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • Linux系统下实现远程连接MySQL数据库的方法教程

    Linux系统下实现远程连接MySQL数据库的方法教程

    MySQL默认root用户只能本地访问,不能远程连接管理mysql数据库,Linux如何开启mysql远程连接?下面这篇文章主要给大家介绍了在Linux系统下实现远程连接MySQL数据库的方法教程,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-06-06
  • MySQL 数据库 binLog 日志的使用操作

    MySQL 数据库 binLog 日志的使用操作

    binlog是MySQL数据库中的一种日志类型,它记录了数据库中的所有更改操作,例如插入、更新、删除操作,本文给大家介绍MySQL 数据库 binLog 日志的使用,感兴趣的朋友一起看看吧
    2023-08-08

最新评论