【问题标题】:How to rename foreign key constraint | MySql 5.6, InnoDB如何重命名外键约束 | MySql 5.6,InnoDB
【发布时间】:2018-07-25 20:09:37
【问题描述】:

我需要重命名 fk 约束(删除所有 fk,创建新的),但 MySql(因为 InnoDB 引擎)为这些约束创建了索引。 我需要手动删除索引吗?还是会导致问题?请有人描述一下这一点。

【问题讨论】:

    标签: mysql constraints innodb database-indexes


    【解决方案1】:

    不会导致问题。

    添加一个 FK应该发现已经有足够的索引而不是添加第二个。即使添加了冗余索引,也没有什么坏处。

    我想知道 -- 你为什么关心约束名称是什么?

    从 5.6 文档开始:“对于 ALTER TABLE,与 CREATE TABLE 不同,ADD FOREIGN KEY 会忽略 index_name 如果给定并使用自动生成的外键名称。作为一种解决方法,包括 CONSTRAINT 子句以指定外键名称:ADD CONSTRAINT name FOREIGN KEY (....) .. " 和 "ALTER TABLE ... ALGORITHM=INPLACE 支持在同一 ALTER TABLE 语句中添加和删除外键,但 ALTER TABLE ... ALGORITHM=COPY 不支持。"

    我提出这一点的目的是,如果您将所有对表的更改放入单个语句中,ALTER通常会运行得更快。但是DROP + ADDCOPY 的情况下是不允许的。

    【讨论】:

    • 因为我重命名了表并尝试加载转储(根据要求)并面临重复外键问题。并且不允许仅通过授予删除旧表。
    • 关闭 FK,加载,然后打开。
    猜你喜欢
    • 2016-03-19
    • 2010-12-07
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    相关资源
    最近更新 更多