解决MySQL遇到错误:1217 - Cannot delete or upd
|
遇到问题
今天在准备"删库跑路"的时候
有的数据表再删除的时候报了以下错误:- 1217 - Cannot delete or update a parent row: a foreign key constraint fails
复制代码 本着有事找度娘的原则,将这句话百度翻译一下,中文意思是“无法删除或更新父行:外键约束失败”。
那这不就好办了,把有外键约束的表删了或者解除约束不就好了。
原因
查看了一下教程发现
数据表之间经常存在外键关联的情况,这时如果直接删除父表,会破坏数据表的完整性,也会删除失败。
删除父表有以下两种方法
- 先删除与它关联的子表,再删除父表;但是这样会同时删除两个表中的数据。
- 将关联表的外键约束取消,再删除父表;适用于需要保留子表的数据,只删除父表的情况。
解决方法
我们尝试一下第二种方法,这样还可以保留一下子表的数据,至少可以早出来两年 (手动狗头)
1.要删除的父表
- CREATE TABLE tb_drop
- (
- id INT(11) PRIMARY KEY,
- name VARCHAR(22),
- location VARCHAR (50)
- );
复制代码 2.外键关联需要被删除的子表
- CREATE TABLE tb_foreign
- (
- id INT(11) PRIMARY KEY,
- name VARCHAR(25),
- deptId INT(11),
- salary FLOAT,
- CONSTRAINT fk_drop_foreign FOREIGN KEY (deptId) REFERENCES tb_drop(id)
- );
复制代码 3.此时如果删除tb_drop表
就会报出1217错误,所以要解除外键约束- ALTER TABLE tb_foreign DROP FOREIGN KEY fk_drop_foreign;
复制代码 执行成功后,两个表之间的外键约束就解除了,此时删除表就可以了总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
来源:https://www.jb51.net/database/322246g8j.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
|
|
|
发表于 2024-6-11 01:06:18
举报
回复
分享
|
|
|
|