第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

MySQL錯誤1452-無法添加或更新子行:外鍵約束失敗

MySQL錯誤1452-無法添加或更新子行:外鍵約束失敗

心有法竹 2019-06-17 15:50:47
我有個奇怪的問題。我試圖向一個引用另一個表的表中添加一個外鍵,但由于某種原因它失敗了。就我對MySQL的有限知識而言,唯一可能令人懷疑的是,在另一個表上有一個外鍵引用了我試圖引用的那個外鍵。我做了一個SHOW CREATE TABLE對兩個表的查詢,sourcecodes_tags是帶有外鍵的表,sourcecodes是引用的表。CREATE TABLE `sourcecodes` (  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,  `user_id` int(11) unsigned NOT NULL,  `language_id` int(11) unsigned NOT NULL,  `category_id` int(11) unsigned NOT NULL,  `title` varchar(40) CHARACTER SET utf8 NOT NULL,  `description` text CHARACTER SET utf8 NOT NULL,  `views` int(11) unsigned NOT NULL,  `downloads` int(11) unsigned NOT NULL,  `time_posted` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  PRIMARY KEY (`id`),  KEY `user_id` (`user_id`),  KEY `language_id` (`language_id`),  KEY `category_id` (`category_id`),  CONSTRAINT `sourcecodes_ibfk_3` FOREIGN KEY (`language_id`) REFERENCES `languages` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,  CONSTRAINT `sourcecodes_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,  CONSTRAINT `sourcecodes_ibfk_2` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)   ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1CREATE TABLE `sourcecodes_tags` (  `sourcecode_id` int(11) unsigned NOT NULL,  `tag_id` int(11) unsigned NOT NULL,  KEY `sourcecode_id` (`sourcecode_id`),  KEY `tag_id` (`tag_id`),  CONSTRAINT `sourcecodes_tags_ibfk_1` FOREIGN KEY (`tag_id`) REFERENCES `tags` (`id`)   ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=latin1這是生成錯誤的代碼:ALTER TABLE sourcecodes_tags ADD FOREIGN KEY (sourcecode_id) REFERENCES sourcecodes (id) ON DELETE CASCADE ON UPDATE CASCADEMySQL錯誤1452-無法添加或更新子行:外鍵約束失敗
查看完整描述

3 回答

?
茅侃侃

TA貢獻1842條經驗 獲得超21個贊

我的MySQL數(shù)據(jù)庫也有同樣的問題,但最后,我得到了一個對我有用的解決方案。
因為在我的表中,從MySQL的角度來看,一切都很好(兩個表都應該使用InnoDB引擎,并且每個列的數(shù)據(jù)類型應該是相同的類型,參與外鍵約束)。
我所做的唯一的事情就是禁用外鍵檢查,然后在執(zhí)行外鍵操作后啟用它。
我采取的步驟:

SET foreign_key_checks = 0;
alter table tblUsedDestination add constraint f_operatorId foreign key(iOperatorId) references tblOperators (iOperatorId); Query
OK, 8 rows affected (0.23 sec) Records: 8  Duplicates: 0  Warnings: 0
SET foreign_key_checks = 1;


查看完整回答
反對 回復 2019-06-17
?
寶慕林4294392

TA貢獻2021條經驗 獲得超8個贊

使用NOT IN查找約束的位置約束:

SELECT column FROM table WHERE column NOT IN (SELECT intended_foreign_key FROM another_table)

因此,更具體而言:

SELECT sourcecode_id FROM sourcecodes_tags WHERE sourcecode_id NOT IN (SELECT id FROM sourcecodes)

編輯:INNOT IN運算符比JOIN運算符,以及更容易構建和重復的操作。


查看完整回答
反對 回復 2019-06-17
  • 3 回答
  • 0 關注
  • 3641 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號