注册
Mysql迁移到DM8关于AUTO_INCREMENT的坑
培训园地/ 文章详情 /

Mysql迁移到DM8关于AUTO_INCREMENT的坑

王欢 2023/08/16 1549 1 1

一、背景

因信创需求,公司产品需要做国产化改造适配,其中数据选型为DM8。产品原来数据库是Mysql,其中涉及到几十个数据库、上千张表。需要将产品原有的数据从Mysql导入DM8,并进行适配DM8的业务产品改造。

二、运行环境

mysql:5.7.25-28-log
image.png
DM:DM V8
image.png

三、曲折的故事情节

我们如火如荼的投入国产化适配的伟大工作中,996、007我们干的热火朝天。我们使用DM8 的图形化工具DTS 导出了数十个库的数千张表,导出产物是sql脚本,这里要夸一句,这工具简单好用,易上手,剧透一下——有坑。
按照既定计划,DTS工具将之前导出的sql脚本导入DM8数据库,会有很多IDENTIY关键字的错,经过度娘后,通过set identity on 导入数据报错问题解决。我们以为IDENTIY是达梦的特性,这样解决就OK了,其实噩梦才刚开始。
1692006163407.png
当我们哼哧哼哧把数据全部导完后,曙光就在前面。我们完成了所有的数据库创建、数据倒换、应用部署完成,业务主页面登陆成功,页面数据展示完美。
但是,这里有个但是,测试的妹子开始做业务流程测试的时候,创建、插入、新增都报错,通过查看业务日志发现关键字“IDENTITY”,我们恍然大悟,业务程序操作数据库insert数据的时候,IDENTITY 也得设置为ON,我们有几十个业务,上百个应用啊,难道都得改程序吗,此时此刻没有拯救,只有自救。

四、自我救赎

问题的关键在IDENTITY类型,我们通过深入研究,DM8 DTS从mysql数据库中导出数据的时候,会将mysql表的自增列AUTO_INCREMENT转换为IDENTITY类型。
找到问题后,我们思考如何将mysql数据正确的导入DM8,项目时间很紧了,兄弟们都有点沮丧。实际上没有多余的选择,我们还是得依赖DTS,我们紧急编写一个处理工具,将DTS 从mysql导出的数据中IDENTITY关键字进行处理改为AUTO_INCREMENT,再将处理后sql脚本导入DM8。脚本样例如下:

mysql:
image.png
DTS 导出后的脚本:
image.png
处理后的脚本(记得PRIMARY KEY 也得加上):
image.png

五、终章

寥寥数十言,道不出国产化适配的辛酸历程,吾辈当自立自强,星星之火必可燎原。愿后来者共勉。
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服