tencent cloud

文档反馈

外键依赖检查

最后更新时间:2024-07-08 17:51:43

    检查详情

    MySQL/MariaDB/Percona/TDSQL-C MySQL 之间的数据迁移:外键依赖支持 CASCADE、SET NULL、RESTRICT、NO ACTION、SET DEFAULT,需要在校验项中开启外键依赖开关。
    MySQL/MariaDB/Percona/TDSQL-C MySQL 之间的数据同步:外键依赖只能设置为 NO ACTION、RESTRICT,设置为其他校验将报错,但用户可选择修复报错或者忽略报错继续任务。
    TDSQL MySQL 的迁移和同步:外键依赖只能设置为 NO ACTION、RESTRICT,设置为其他校验将报错,但用户可选择修复报错或者忽略报错继续任务。
    TDSQL TDStore 数据迁移:不支持外键依赖数据,如果源库中有外键数据校验会报错。
    部分库表迁移时,有外键依赖的表必须齐全。

    外键依赖参数说明

    MySQL 系类型的数据库在设置外键时,删除和更新有四个值可以选择。
    CASCADE:父表进行删除或者更新记录时,子表会同步删除或更新关联记录。
    SET NULL:父表进行删除或者更新记录时,子表会将关联记录的外键字段所在列设为 null(子表外键不能设为 not null)。
    RESTRICT:父表执行删除或更新记录时,如果子表中有关联该父表的记录,则拒绝该父表删除请求。
    NO ACTION:同 RESTRICT,也是首先检查外键。
    SET DEFAULT:父表进行删除或者更新记录时,子表将外键列设置成一个默认的值,但 InnoDB 引擎不能识别。

    忽略报错或开启外键依赖关系迁移

    对于 MySQL/MariaDB/Percona/TDSQL-C MySQL 之间的数据迁移,外键依赖支持 CASCADE、SET NULL、RESTRICT、NO ACTION、SET DEFAULT。
    DTS 默认支持 RESTRICT,NO ACTION,如果源数据库迁移的数据中存在其他类型的外键依赖配置,校验系统会报错,需要用户按照如下指导在校验项中开启外键依赖。
    1. 在数据迁移操作中的校验任务页面,源库存在外键依赖规则 CASCADE、SET NULL、SET DEFAULT,校验项报错,查看校验项详情。
    
    
    
    2. 根据情况选择忽略报错,或者迁移外键依赖关系。确认无误后勾线风险知会,单击确认
    选项
    说明
    屏蔽外键依赖检查报错
    勾选后忽略已有的校验报错,继续迁移任务。
    源库中存在外键规则 CASCADE、SET NULL、SET DEFAULT,仍可以进行迁移,但屏蔽报错后可能出现因为父表进行删除或者更新操作,导致目标库和源库的数据结果不一致。
    迁移外键依赖关系
    勾选后支持迁移 CASCADE、SET NULL、SET DEFAULT 类型的外键依赖关系,但 DTS 仅在任务发起时检查外键依赖关系,保证存量数据迁移到目标库的一致性。
    1. 任务迁移过程中不要修改源库中的外键依赖规则,否则将导致目标库数据与源库不一致。 如在迁移过程中,将源库外键规则从 CASCADE 修改为 NO ACTION,目标库中父表的更新及删除操作仍会影响子表。
    2. 在外键规则为 CASCADE 或 SET NULL 时,勾选迁移外键依赖关系后,在全量迁移阶段会对源库短暂加表锁,影响时间约 5-10 秒。
    3. 为了保证数据的一致性,在增量同步阶段,对外键相关表的数据传输将从行级同步降级为表级同步,性能会有所下降。
    
    3. 重新执行校验任务。

    修复报错

    MySQL/MariaDB/Percona/TDSQL-C MySQL 之间的数据同步:外键依赖只能设置为 NO ACTION、RESTRICT,设置为其他校验将报错,但用户可选择修复报错或者忽略报错继续任务,如需修复报错请如下指导操作。
    TDSQL MySQL 的迁移和同步:外键依赖只能设置为 NO ACTION、RESTRICT,设置为其他校验将报错,但用户可选择修复报错或者忽略报错继续任务,如需修复报错请如下指导操作。
    TDSQL MySQL(TDStore):不支持外键依赖数据,请删除对应的外键参数内容才能继续任务。

    修改外键规则

    Windows 操作指导

    2. 在左侧目标树上选中要修改的表,在打开的表编辑界面上,单击外键页签,修改外键参数,如下图所示。
    
    
    3. 修改完成后,单击保存
    4. 重新执行校验任务。

    Linux 操作指导

    2. 删除原来的外键设置。
    alter table `表名称1` drop foreign key `外键名称1`;
    3. 重新添加外键设置。
    alter table `表名称1` add constraint `外键名称2` foreign key `表名称1`(`列名1`) references `表名称2`(`列名1`)
    on update no action on delete no action;
    4. 重新执行校验任务。

    完善迁移对象

    修改迁移任务配置,在迁移对象中勾选具有关联关系的对象。
    1. DTS 控制台,选择对应的迁移任务,在操作列选择更多 > 修改
    2. 迁移对象中勾选具有关联关系的对象。
    3. 重新执行校验任务。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持