首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要用外键将一个数据库迁移到一个新的数据库。如何检查约束错误?

问我需要用外键将一个数据库迁移到一个新的数据库。如何检查约束错误?
EN

Database Administration用户
提问于 2019-11-28 10:49:38
回答 2查看 397关注 0票数 -1

我需要将许多mysql MyISAM表迁移到一个新的InnoDb版本,添加外键约束。我可以转储和导入,禁用第一个外键检查。

但是,当我再次激活外键检查时,是否有一种方法可以检查哪些表存在约束问题(不需要手动检查所有这些表)?

EN

回答 2

Database Administration用户

发布于 2019-11-28 12:04:05

这正是测试数据库的用途。

创建一个并尝试将数据加载到其中。

如果它装上了,很好。如果没有,MySQL会告诉你为什么它不能这样做。

票数 0
EN

Database Administration用户

发布于 2019-11-29 20:16:36

这可能有点混乱:

计划A:

  1. mysqldump --无数据> schema.txt
  2. mysqldump --无创建表> data.txt
  3. mysql < schema.txt
  4. 换桌子..。ENGINE=InnoDB;-对于每个表
  5. mysql < data.txt --在插入时将检查FK约束。

但是..。如果按“错误”顺序加载表,那么步骤5中会有很多失败。

  1. 一次转储一个表
  2. 按顺序加载表,以便在子表之前加载父表。

计划B:

在同一服务器上:

  1. CREATE DATABASE try;
  2. (子表之前的父表):对于每个表:
    • CREATE TABLE try.tbl LIKE real.tbl;
    • ALTER TABLE try.tbl ENGINE=InnoDB;
    • INSERT INTO try.tbl SELECT * FROM real.tbl;

计划C:

在现有的MyISAM数据库中,设计并运行查找任何FK错误的选择。这可能涉及到LEFT JOIN ... IS NULL (查找缺少的行)。

建议使用小型LIMIT和/或用SELECT COUNT(*)包装。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/254338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档