mysql - ERROR 1452:无法添加或更新子行:DELETE 操作上的外键约束失败?
问题描述
我正在尝试DELETE
从 db (mySQL Workbench) 中记录并收到约束错误。
Executing:
DELETE FROM `users` WHERE (`ID` = '27');
Operation failed: There was an error while applying the SQL script to the database.
ERROR 1452: 1452: Cannot add or update a child row: a foreign key constraint fails (`people`, CONSTRAINT `people_ibfk_36` FOREIGN KEY (`creatorID`) REFERENCES `users` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE)
SQL Statement:
DELETE FROM `users` WHERE (`ID` = '27')
错误的原因可能是什么?数据库不应该只是级联删除被users
删除记录引用的任何内容(在本例中为表中的条目people
)?这可能是由一些进一步的引用引起的(例如,将在删除时设置 null 并且不允许 null ),但错误指向引用链中最近的表?
编辑:表定义
Users
桌子
CREATE TABLE `users` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`firstLogin` tinyint(1) NOT NULL DEFAULT 1,
`name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`surname` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`createdAt` datetime NOT NULL,
`updatedAt` datetime NOT NULL,
`accountTypeID` int(11) DEFAULT NULL
PRIMARY KEY (`ID`),
KEY `accountTypeID` (`accountTypeID`),
CONSTRAINT `users_ibfk_1` FOREIGN KEY (`accountTypeID`) REFERENCES `account_types` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
People
桌子
CREATE TABLE `people` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`appOwner` tinyint(1) DEFAULT 0,
`name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`surname` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`createdAt` datetime NOT NULL,
`updatedAt` datetime NOT NULL,
`favStatusID` int(11) DEFAULT NULL,
`userID` int(11) DEFAULT NULL,
`creatorID` int(11) DEFAULT NULL
PRIMARY KEY (`ID`),
UNIQUE KEY `people_creator_i_d_user_i_d` (`creatorID`,`userID`),
KEY `favStatusID` (`favStatusID`),
KEY `userID` (`userID`),
CONSTRAINT `people_ibfk_34` FOREIGN KEY (`favStatusID`) REFERENCES `fav_statuses` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT `people_ibfk_35` FOREIGN KEY (`userID`) REFERENCES `users` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT `people_ibfk_36` FOREIGN KEY (`creatorID`) REFERENCES `users` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=200 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
解决方案
推荐阅读
- c# - Console.ReadLine 无法使用 .ToUpper 更改输入
- json - 在 SWIFT / SWIFT UI 中解析未知数量的项目
- javascript - Rails 表单提交在带有 jQuery 的 Rails 中不起作用
- python - OpenCV findContours() 仅在预先保存和读取图像时才检测轮廓
- asp.net-core - 从视图模型更新时隐藏字段的任何替代方法?我不想在编辑页面中包含所有字段
- java - 对象不会初始化 - 无法识别方法
- python - 在路由的函数内使用 pymongo 实例
- kubernetes - kubernetes dashbord 安装后无法从 api 服务器获取 csrf
- xamarin.forms - Xamarin 表单:epubreader.cross 的问题
- sql-server - 通过 SSIS 同时使用多个 SQL Server