赞
踩
目录
甲方爸爸要求,信创的机器(arm架构),现在需要迁移mysql到达梦,先在本地(x86-64架构)模拟下咯!
用户:ESO
模式:ESO
不理解账号创建的同学,先直接跳转章节3.3部分查看。
不会安装达梦数据库的同学,移步本人其他文章查看(Windows版,Docker防踩坑版、信创版)
右击空白处,新建
MySql迁移DM
输入你的mysql配置后,刷新,选择要迁移的数据库名
输入你要迁入的达梦数据库的配置
先用默认
保持对象名大小写,不勾选,达梦默认表名和字段名都大写
全选你要迁移的表
点击完成开始迁移
和1.1操作流程一样,但是账号用的是SYSDBA;
迁移后的表,会自动新建一个模式ESO,但是是属于SYSDBA用户的,也没有独立的表空间;
无效的表或视图名[SYS_USER]
; 第3 行附近出现错误:
无效的表或视图名[SYS_USER]; nested exception is dm.jdbc.driver.DMException: 第3 行附近出现错误:
无效的表或视图名[SYS_USER]] with root causedm.jdbc.driver.DMException: 第3 行附近出现错误:
无效的表或视图名[SYS_USER]
at dm.jdbc.driver.DBError.throwException(DBError.java:684)
把报错中的sql,在达梦数据库里执行一遍
发现该sql语句是报错的;
首先,达梦数据库安装时,选择的是大小写敏感,所以查看达梦的表名是否大写
所以,sql语句里必须写成:
SELECT * FROM "SYS_USER"
还是报错,原因是,当前表所在的模式(理解为mysql的数据库)是ESO,我们登录账户是SYSDBA,两者不一致时,需要写上模式作为前缀。若一致则不需要写(用ESO账号登录时)
正确sql如下:
select * from "ESO"."SYS_USER"
通过@TableName()注解,指定表名。
@TableName("sys_user") 改成 @TableName("ESO.SYS_USER")
报错内容:
首先确认这里的实体类SysUserTokenEntity已经修改兼容好了。
“注意,过滤只看.java文件”
然后过滤只看.xml文件,去排查mapper。
修改完成如下:
暴力解决,需要一个个的去兼容修改,适合代码量不多的情况,很麻烦很费时间,还影响原来的代码;
我们采用章节3进行可视化重装,实现指定用户和模式以及大小写不敏感;需要用到章节1的快速迁移来实现。
打开DM库服务查看器
右击停止数据库实例服务
打开DM数据库配置助手
选择数据库
确认删除
默认即可
一般默认即可
注意时区、字符集编码、大小写敏感
其中,大小写敏感必须去掉,
这样spring工程代码适配时,不需要暴力的去一个个转换成大写了
完成
账号密码一样
SYSDBA/SYSDBA
红框部分自己写
文件路径MY_ESO\MY_ESO.DBF不可以存在,否则会创建失败!
完整路径:E:\dmdbms\data\MY_ESO\MY_ESO.DBF
创建成功后,可以看到MY_ESO.DBF文件自动生成。
查看新建的表空间
新建用户ESO,会自动创建模式(类似数据库)ESO;
这样,原本的spring java代码,就不需要手动的去加上ESO.前缀
右击管理用户,新建
账号密码设置、关联表空间和索引表空间、散列算法
ESO/12345678
创建成功
密码长度太短会报错
新建用户成功后,会生成一个和用户名同名的模式
模式里面才是实际对表的增删改查等操作
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。