暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

干货攻略 | MYSQL迁移至达梦常见问题处理

达梦大学 2021-05-26
2606

/ 这是我的第210篇文章

达梦干货攻略

【Date:2021.05.26】

MY ARTICLE

本文重点介绍MYSQL迁移至达梦数据库的过程中常见问题的处理方法,希望通过本文,帮助大家获得更好的数据迁移体验。


本章内容已在如下环境上测试:
操作系统:CentOS 7;
数据库:达梦数据库DM8、MYSQL 5.7。

GAN HUO

自增列问题



1、查看MYSQL表结构

2、开始迁移:先迁移表结构

在迁移数据时,选项如下

3、查看结果

迁移完成,查看结果是否正确。

mysql数据如下

达梦数据如下

可以发现自增列上数据有出入

4、重新进行迁移

迁移数据

选中 启用标志列插入

迁移完成

5、查看数据

数据和MYSQL一致。




GAN HUO

默认值为时间的问题


1、情况说明:

MYSQL从5.7后的版本设置默认值为’0000-00-00’,出现异常:Invalid default value for ‘create_time’

NO_ZERO_IN_DATE:

在严格模式下,不允许日期和月份为零

NO_ZERO_DATE:

设置该值,mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告。

2、解决办法:

通过select @@sql_mode;查询当前mode

    SET GLOBAL sql_mode=‘ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’;
    复制

    需要退出,重新登陆mysql生效

      create table t2
      (id int not null,
      name varchar(20) not null,
      phone int,
      createtime datetime DEFAULT "0000-00-00 00:00:00");
      复制


      创建测试数据

      进行迁移

      错误号: -2670

      错误消息: 对象[CREATETIME]DEFAULT约束表达式无效
        CREATE TABLESYSDBA”.“T2”


        (“IDINT NOT NULL,


        NAMEVARCHAR(20) NOT NULL,


        “PHONE” INT NULL,


        “CREATETIME” TIMESTAMP(0) DEFAULT0000-00-00 00:00:00NOT NULL


        )
        复制

        因为DM默认会对事件类型数据进行检查

        0000-00-00这种数据明显是不存在的

        将default的值进行修改,修改为合理时间均可进行创建

        迁移数据由于数据问题,仍是迁移不了,需要从源库MYSQL上进行数据修改。

        修改mysql数据

        重新迁移

        查看数据。







        好,以上是本次分享内容,希望能给大家带来帮助。

        往期回顾

        干货丨DMSQL执行耗时异常问题排查

        干货丨达梦数据库动态增加实时备库

        干货丨DM JOB作业的邮件发送

        开班【DCA培训】6月7日-9日,来参加达梦认证管理员培训吧~


        本文首次发表于CSDN,经原作者同意在本公众号发布。

        【内容】:姜权峰

        【编辑】:王

        文章转载自达梦大学,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论