解決MySQL遇到錯(cuò)誤:1217 - Cannot delete or update a parent row: a foreign key constraint fails
遇到問題
今天在準(zhǔn)備"刪庫跑路"的時(shí)候
有的數(shù)據(jù)表再刪除的時(shí)候報(bào)了以下錯(cuò)誤:
1217 - Cannot delete or update a parent row: a foreign key constraint fails
本著有事找度娘的原則,將這句話百度翻譯一下,中文意思是“無法刪除或更新父行:外鍵約束失敗”。
那這不就好辦了,把有外鍵約束的表刪了或者解除約束不就好了。
原因
查看了一下教程發(fā)現(xiàn)
數(shù)據(jù)表之間經(jīng)常存在外鍵關(guān)聯(lián)的情況,這時(shí)如果直接刪除父表,會(huì)破壞數(shù)據(jù)表的完整性,也會(huì)刪除失敗。
刪除父表有以下兩種方法
- 先刪除與它關(guān)聯(lián)的子表,再刪除父表;但是這樣會(huì)同時(shí)刪除兩個(gè)表中的數(shù)據(jù)。
- 將關(guān)聯(lián)表的外鍵約束取消,再刪除父表;適用于需要保留子表的數(shù)據(jù),只刪除父表的情況。
解決方法
我們嘗試一下第二種方法,這樣還可以保留一下子表的數(shù)據(jù),至少可以早出來兩年 (手動(dòng)狗頭)
1.要?jiǎng)h除的父表
CREATE TABLE tb_drop ( id INT(11) PRIMARY KEY, name VARCHAR(22), location VARCHAR (50) );
2.外鍵關(guān)聯(lián)需要被刪除的子表
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.此時(shí)如果刪除tb_drop表
就會(huì)報(bào)出1217錯(cuò)誤,所以要解除外鍵約束
ALTER TABLE tb_foreign DROP FOREIGN KEY fk_drop_foreign;
執(zhí)行成功后,兩個(gè)表之間的外鍵約束就解除了,此時(shí)刪除表就可以了
dDROP TABLE tb_drop;
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SQL中row_number()?over(partition?by)的用法說明
這篇文章主要介紹了SQL中row_number()?over(partition?by)的用法說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
MySQL字符串截取的核心要點(diǎn)和注意事項(xiàng)
這篇文章主要介紹了MySQL字符串截取的核心要點(diǎn)和注意事項(xiàng),substr函數(shù)在數(shù)據(jù)處理中有著廣泛的應(yīng)用,從日志分析、數(shù)據(jù)報(bào)告生成到復(fù)雜的數(shù)據(jù)清洗和處理流程中,substr都能大顯身手,需要的朋友可以參考下2025-08-08
在同一Linux下安裝兩個(gè)版本的MySQL的流程步驟
打工人奉旨制作數(shù)據(jù)庫服務(wù)的虛擬機(jī)模板,模板中包含各種數(shù)據(jù)庫,其中mysql需要具備5.7及8.0兩個(gè)版本,并保證服務(wù)能正常同時(shí)使用,所以本文給小編介紹了在同一Linux下安裝兩個(gè)版本的MySQL的流程步驟,需要的朋友可以參考下2024-03-03
PHP學(xué)習(xí)散記 2012_01_07(MySQL)
數(shù)據(jù)庫是Web大多數(shù)應(yīng)用開發(fā)的基礎(chǔ)。如果你是用PHP,那么大多數(shù)據(jù)庫用的是MYSQL也是LAMP架構(gòu)的重要部分2012-01-01
MySQL中數(shù)據(jù)類型相關(guān)的優(yōu)化辦法
這篇文章主要介紹了MySQL中數(shù)據(jù)類型相關(guān)的優(yōu)化辦法,包括使用多列索引等相關(guān)的優(yōu)化方法,需要的朋友可以參考下2015-07-07
MySQL索引優(yōu)化指南之如何科學(xué)為數(shù)據(jù)表添加索引
在數(shù)據(jù)庫優(yōu)化中,索引(Index)是最常用的性能優(yōu)化手段之一,正確的索引可以大幅提升查詢速度,本文小編就來和大家講講如何為數(shù)據(jù)表科學(xué)添加索引吧2025-05-05

