MySQL不能删除外键约束所需的索引

我需要改变现有的数据库添加一列。 因此我也想更新UNIQUE字段来包含这个新列。 我试图删除当前的索引,但不断收到错误MySQL Cannot drop index needed in a foreign key constraint

CREATE TABLE mytable_a ( ID TINYINT NOT NULL AUTO_INCREMENT PRIMARY KEY, Name VARCHAR(255) NOT NULL, UNIQUE(Name) ) ENGINE=InnoDB; CREATE TABLE mytable_b ( ID TINYINT NOT NULL AUTO_INCREMENT PRIMARY KEY, Name VARCHAR(255) NOT NULL, UNIQUE(Name) ) ENGINE=InnoDB; CREATE TABLE mytable_c ( ID TINYINT NOT NULL AUTO_INCREMENT PRIMARY KEY, Name VARCHAR(255) NOT NULL, UNIQUE(Name) ) ENGINE=InnoDB; CREATE TABLE `mytable` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `AID` tinyint(5) NOT NULL, `BID` tinyint(5) NOT NULL, `CID` tinyint(5) NOT NULL, PRIMARY KEY (`ID`), UNIQUE KEY `AID` (`AID`,`BID`,`CID`), KEY `BID` (`BID`), KEY `CID` (`CID`), CONSTRAINT `mytable_ibfk_1` FOREIGN KEY (`AID`) REFERENCES `mytable_a` (`ID`) ON DELETE CASCADE, CONSTRAINT `mytable_ibfk_2` FOREIGN KEY (`BID`) REFERENCES `mytable_b` (`ID`) ON DELETE CASCADE, CONSTRAINT `mytable_ibfk_3` FOREIGN KEY (`CID`) REFERENCES `mytable_c` (`ID`) ON DELETE CASCADE ) ENGINE=InnoDB; mysql> ALTER TABLE mytable DROP INDEX AID; ERROR 1553 (HY000): Cannot drop index 'AID': needed in a foreign key constraint

您必须删除外键。 MySQL中的外键自动在表格上创build一个索引(关于这个主题有一个SO问题 )。

ALTER TABLE mytable DROP FOREIGN KEY mytable_ibfk_1 ;

步骤1

列出外键(注意不同于索引名)

SHOW CREATE TABLE

结果会显示您的外键名称。

第2步

删除(外键/主键/键)键

ALTER TABLE

第3步

放下索引

如果你的意思是你可以这样做:

CREATE TABLE mytable_d ( ID TINYINT NOT NULL AUTO_INCREMENT PRIMARY KEY, Name VARCHAR(255) NOT NULL, UNIQUE(Name) ) ENGINE=InnoDB; ALTER TABLE mytable ADD COLUMN DID tinyint(5) NOT NULL, ADD CONSTRAINT mytable_ibfk_4 FOREIGN KEY (DID) REFERENCES mytable_d (ID) ON DELETE CASCADE; > OK.

但是之后:

ALTER TABLE mytable DROP KEY AID ;

给出错误。

您可以删除索引并在一个ALTER TABLE语句中创build一个新索引:

ALTER TABLE mytable DROP KEY AID , ADD UNIQUE KEY AID (AID, BID, CID, DID);

因为你必须在外键字段上有一个索引,所以你可以在字段'AID'上创build一个简单的索引,

CREATE INDEX aid_index ON mytable (AID);

然后才删除唯一索引“AID”

ALTER TABLE mytable DROP INDEX AID;

mysql不能删除外键吗,MySQL不能删除外键约束所需的索引相关推荐

  1. oracle删除库里的所有表,清空mysql指定库里全部表数据-自动删除所有表,有外键约束的表优先删除...

    清空mysql指定库里所有表数据-自动删除所有表,有外键约束的表优先删除 由于要清空数据库数据 ,手动非常麻烦.网上找了一下,有一个Oracle的,参照它,在其上修改一下用于Mysql,把代码奉献如下 ...

  2. mysql创建外键级联更新_MySQL使用外键实现级联删除与更新的方法

    本文实例讲述了MySQL使用外键实现级联删除与更新的方法.分享给大家供大家参考,具体如下: MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时 ...

  3. DBeaver mysql 外键设置了级联删除,子表无法添加数据

    DBeaver mysql 外键设置了级联删除,子表无法添加数据 报错:Cannot add or update a child row: a foreign key constraint fails ...

  4. mysql外键的建立和删除更新

    – 约束 – not null非空,unique唯一 primary key 非空且唯一[主键] – default默认 check保证满足条件 foreign key外键 约束的建立方法如下: cr ...

  5. mysql存在外键的连接_MySQL(外连接、自然连接、新增-追加-删除外键、外键条件-约束)...

    外连接(outer join) left join:左外连接(左连接),以左表为主表 right join:右外连接(右连接),以右表为主表 基本语法:左表 left/right join 右表 on ...

  6. mysql外键更新规则_sql server 外键 更新(删除)规则

    以前用数据库,一般都建表关系,但是这些关系建好了往往没有用到. 这次写一个项目,涉及到多表的外键约束和级联删除的问题,才研究了一下. 用的vs2005里面自带的SqlExpress,在VS里面作数据库 ...

  7. mysql支持UUID做外键_多表外键下将普通的id主键更新为uuid主键

    多表外键下将普通的id主键更新为uuid主键 2019-05-20 02:45:37 来源: 晴天小雨 0 摘要:在多表外键影响和保证数据不删除的前提下,借助Flask-sqlalchemy插件及SQ ...

  8. mysql取出数据外键_mysql数据表有外键,应注意的几点(目前学习所获得的经验)...

    mysql : 1.有做外键的表子表和父表的引擎要一致才能添加数据:否则报外键约束错误 2.数据 类型要一致,不然添加补了 外键: 3.InnoDB和 myisam的区别(来源:PHP100中文网) ...

  9. mysql 权限 备份还原,MYSQL学习笔记09:备份还原,用户权限,外键

    在线QQ客服:1922638 专业的SQL Server.MySQL数据库同步软件 整个数据库数据备份也称为sql数据备份:备份的结果都是sql指令 在mysql中,提供了专门用于备份sql的客户端: ...

最新文章

  1. win8计算机安全模式,安全模式,教您Win8怎么进入安全模式
  2. [转]IIS7全新管理工具AppCmd.exe的命令使用
  3. 串口通信与编程:串口基础知识
  4. java代码运行Python程序
  5. 机器学习与计算机视觉(数据集的选择)
  6. 如何创建SQL Server报告服务(SSRS)报告
  7. 计算机辅助设计与制造考试重点,2016计算机辅助设计与制造复习内容
  8. digester解析rule详解
  9. 全国计算机能力挑战赛含金量高吗,大学里,有哪些含金量高,又容易得奖的国家级比赛?...
  10. 易班开发者大会总结;
  11. 计算机操作系统的最基本特性,操作系统有哪几大特征?其最基本的特征是什么?...
  12. OJ 1038 宋小胖买切糕
  13. nodejs event emitter
  14. Android Push哪家强——分析豌豆荚1400个APP
  15. 微型计算机显示器的两种引线,第八章章节微型计算机接口技术8-2led显示器接口.ppt...
  16. C语言头昏,眩晕、头晕、头昏混为一谈?这可不是一种病症
  17. html utf 8编码转换器,utf8和gb2312编码在线转换工具
  18. 【阿里云】云服务器ECS怎么一键重装系统
  19. PHPBB网站如何搬迁新服务器,phpbb 安装教程
  20. Linux网络编程中EAGAIN错误和EINTR错误

热门文章

  1. SAP扫盲系列之二:SAP ABAP应用服务器的组成部分
  2. 一段让人瑟瑟发抖的ABAP代码
  3. implementation of UI5 bindAggregation - busyDialog is handled automatically
  4. SAP CRM代码对数据库表COMM_PRODUCT的读写访问情况明细统计
  5. SAP OData Batch request processing in backend
  6. Ui5 tool debug - ctrl+alt+shift+s实现原理
  7. IBASE archive pre-processing report RIBARCHV
  8. 关于错误Resource interpreted as Script but transferred with MIME type text_html
  9. SAP Spartacus 的基于outlet 的页面扩展
  10. SAP UI5里xml fragment getContent方法的实现