我需要更改现有数据库以添加列。因此,我也想更新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中的外键会在表上自动创建索引(该主题上有一个SO问题)。
ALTER TABLE mytable DROP FOREIGN KEY mytable_ibfk_1 ;
问题内容: 我想使用外键来保持完整性并避免使用孤立键(我已经使用过innoDB)。 如何创建在CASCADE上删除的SQL语句? 如果我删除一个类别,那么如何确保它不会删除也与其他类别相关的产品。 数据透视表“ categories_products”在其他两个表之间创建多对多关系。 问题答案: 如果您的级联删除某个产品是因为该产品属于被杀类别的成员,那么它会删除该产品,那么您的外键设置不正确。给
在MySQL中,我想删除一个表。 我尝试了很多方法,但我总是得到一个错误,即不能删除名为的表。这是我得到的错误: #1217-无法删除或更新父行:外键约束失败 我怎么放下这张桌子?
我正在尝试运行一个Spring Boot应用程序,但我有这个问题,我不知道原因。请注意,我想使用的是Mysql,而不是H2数据库 我的受抚养人
本文向大家介绍MySQL中外键的创建、约束以及删除,包括了MySQL中外键的创建、约束以及删除的使用技巧和注意事项,需要的朋友参考一下 前言 在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束。 外键的使用条件: 1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持); 2.外键列必须建立了索引,MySQL 4.1.2以后
问题内容: 因此,我作为项目需求试图将外键约束添加到数据库中,并且它第一次或在两个不同的表上运行,但是在尝试添加外键约束时,我在两个表上遇到错误。我收到的错误消息是: 错误1215(HY000):无法添加外键约束 这是我用来创建表的SQL,两个有问题的表是和。 问题答案: 要查找特定错误,请运行以下命令: 并查看该部分。 子列的数据类型必须与父列完全匹配。例如,由于是,也需要是,而不是。 另外,您
我在创建mysql数据库中现有表的外键时遇到了一些问题。 我不想创建一个名为的新表来引用它,使用以下方法: 但我发现了错误: 为了获得更多的信息,我做了: 在我看来,这两个列的类型似乎是匹配的,因为它们都是varchar(45)。(我还尝试将列设置为not null,但这没有解决问题)所以我猜问题一定是。但我不太清楚这意味着什么,也不知道如何检查/修复它。有人有什么建议吗?是什么意思?