当我不想彼此连接两个表时,我收到消息:#1452 - 无法添加或更新子行:外键约束失败....我想连接oauth_uid2(主键) facebook_users tabel to bugs tabel with foreign key oauth_uid2。但我总是得到这个信息。我已经清除了我的数据,但没有任何效果。在users_facebook表中,我有1条记录。
1452 - 无法添加或更新子行:外键约束失败(
phples
。bugs
,CONSTRAINTbugs_ibfk_1
FOREIGN KEY(oauth_uid2
)REFERENCES {{1 }(users_facebook
)ON DELETE CASCADE ON UPDATE CASCADE)
错误表:FK = oauth_uid2,PK = bug_id
oauth_uid2
users_facebook表:PK = oauth_uid2
#Name Type Collation Attributes Null Default Extra Action
1 bug_id int(30) No None AUTO_INCREMENT Change Drop Browse distinct values Primary Unique Index Spatial Fulltext
2 bugtitle varchar(50) utf8_unicode_ci No None Change Drop Browse distinct values Primary Unique Index Spatial Fulltext
3 bugdescription varchar(500) utf8_unicode_ci No None Change Drop Browse distinct values Primary Unique Index Spatial Fulltext
4 oauth_uid2 int(30) No None Change Drop Browse distinct values Primary Unique Index Spatial Fulltext
答案 0 :(得分:2)
如果使用其他工具(如phpMyAdmin或Navicat)备份Magento数据库,则会丢失这些特殊语句。当您尝试运行.sql文件时,您将收到以下错误:
无法添加或更新子行:外键约束失败
发生此错误是因为您要导入的数据是逐行提供的,而不考虑数据库的逻辑结构和完整性。
要在不进行约束检查的情况下恢复.sql文件备份,只需在.sql文件的开头添加以下语句:
SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT;
SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS;
SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION;
SET NAMES utf8;
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO';
SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0;
在文件末尾,添加再次启用约束检查所需的语句:
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT;
SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS;
SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION;
SET SQL_NOTES=@OLD_SQL_NOTES;
你将能够做到这一点。
答案 1 :(得分:0)
您已经将表格链接起来,这是错误的来源。您需要确保在users_facebook
之前中有记录,并尝试使用相同的oauth_uid2将记录插入bugs
,例如
users_facebook has records with oauth_uid2 `10`, `20`, `30`
您尝试使用
将记录插入bugs
INSERT INTO bugs (oauth_uid2) VALUES (10) // works, there's a matching record in users_facebook
INSERT INTO bugs (oauth_uid2) VALUES (15) // fails, there's no user with that id.