代码之家  ›  专栏  ›  技术社区  ›  Hamza Abdaoui

MySQL工作台:密钥疑难解答

  •  1
  • Hamza Abdaoui  · 技术社区  · 6 年前

    我有一个 php

    创建这个表需要一个荒谬的大时间(超过30分钟!)。所以我决定排除故障。我确信问题出在 Keys

    我曾经 MySQL WorkBench 要做到这一点,我现在很难理解这句话:

    /!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 /;
    PRIMARY KEY (`CONC_ID`,`d_id_2`),
    KEY `vo_marque_id` (`VM_id`),
    KEY `CONC_ID` (`CONC_ID`,`d_id_2`)
    /!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS /;
    

    这是不是意味着我有重复的钥匙 CONC_ID ? 或者我有一个 Key 那是指它自己?

    1 回复  |  直到 6 年前
        1
  •  2
  •   fancyPants    6 年前
    /!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 /;
    
    • /!40014 意思是“仅当MySQL服务器版本至少为4.0.14时才执行此操作
    • SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS foreign_key_checks 在变量中 old_foreign_key_checks
    • 然后使用禁用外键检查 FOREIGN_KEY_CHECKS=0

    PRIMARY KEY (`CONC_ID`,`d_id_2`),
    KEY `vo_marque_id` (`VM_id`),
    KEY `CONC_ID` (`CONC_ID`,`d_id_2`)
    
    • 索引 conc_id alter table <your_table> drop index conc_id;

    /!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS /;
    
    • 外键检查 使用之前使用的变量。仅当版本大于4.0.14时,才再次进行此操作