Mysql SQL:外键构造失败

Mysql SQL:外键构造失败,mysql,foreign-keys,constraints,Mysql,Foreign Keys,Constraints,我最近进入了一个新项目,他们的数据库似乎一团糟。当然,他们也没有它的备份版本,所以我一直在尝试导出数据库并再次导入,所以我有一个测试服务器要开发。我以前没有SQL方面的知识,我只是设计了一段时间的网站前端,这对我来说是全新的 数据库的大小超过了gig,所以我使用BigDump批量加载我的sql数据库,它达到100%,然后bam。我得到一个外键错误。我现在不知所措,想尽一切办法,所以我来找你们!任何想法或帮助都将不胜感激 这是它给我的错误 第3266725行出现错误: ADD CONSTRAINT

我最近进入了一个新项目,他们的数据库似乎一团糟。当然,他们也没有它的备份版本,所以我一直在尝试导出数据库并再次导入,所以我有一个测试服务器要开发。我以前没有SQL方面的知识,我只是设计了一段时间的网站前端,这对我来说是全新的

数据库的大小超过了gig,所以我使用BigDump批量加载我的sql数据库,它达到100%,然后bam。我得到一个外键错误。我现在不知所措,想尽一切办法,所以我来找你们!任何想法或帮助都将不胜感激

这是它给我的错误

第3266725行出现错误:

ADD CONSTRAINT `FK_CATRULE_CSTR_GROUP_CSTR_GROUP_ID_CSTR_GROUP_CSTR_GROUP_ID`  
FOREIGN KEY (`customer_group_id`) 
REFERENCES `customer_group` (`customer_group_id`) 
ON DELETE CASCADE ON UPDATE CASCADE;
查询:-

-

MySQL:无法添加或更新子行:外键约束失败johnsoja_magento2.sql-3a72_5d7aff


对我来说,这真的就像是另一种语言,如果我在这里解决了一件事,它就会告诉我接下来的问题。怎么办?!谢谢

似乎您正在尝试重新定义现有约束: 要解决它。。。非常简单,您只需使用以下方法删除此约束:

   ALTER TABLE catalogrule_customer_group
   DROP FOREIGNKEY FK_CATRULE_CSTR_GROUP_CSTR_GROUP_ID_CSTR_GROUP_CSTR_GROUP_ID;
如果此错误显示为:第3266725行的错误:添加约束外键


您可以使用yhis查询来删除某些约束…祝您好运

外键约束失败的主要原因有两个: -两列的数据类型不匹配; -表中已存在与规则冲突的数据

尝试查看customer_group和catalogrule_customer_group表中的数据, 如果第一个为空,而第二个中有数据,则查询将失败

将sql导出分块是个坏主意。。。如果你不明白,
寻找将其作为steam/文件导出/导入的解决方案。

谢谢您的帮助!我可能完全错了,但是我在新安装的db上尝试了这个查询,得到了:1064-您的SQL语法有一个错误;查看与MySQL服务器版本对应的手册,了解使用第2行“CONSTRAINT FK_CATRULE_CSTR_GROUP_CSTR_GROUP_ID_CSTR_GROUP_CSTR_GROUP_ID”附近的正确语法,我有点犹豫是否将表放到live db上,因为我不希望它可能使整个数据库崩溃并将我置于十字光标中。我必须在实时数据库上执行吗?不,不要删除实时表。。。试试你的查询;我试着在没有答案的情况下提问;但它还是返回了同样的错误哦,对不起,这是我的错。。。我教过你使用SQL Server…这是MySQL版本==>ALTER TABLE catalogrule\u customer\u group DROP外键FK\u CATRULE\u CSTR\u group\u ID\u CSTR\u group\u ID在尝试时,它返回时出现以下错误:1025-将“/johnsoja\u magento2/catalogrule\u customer\u group”重命名为“/johnsoja\u magento2/sql2-3a72-5f9bdc”errno:152为什么不进行备份并以这种方式还原。老实说,听起来数据库中的数据是脏的——它不符合外键推断的业务规则。祝你好运。这听起来很新鲜,但我认为最好的备份方法是按原样导出数据库,是否有其他方法可以尝试备份和恢复?我调查了这两个组,他们之间唯一的共同点是都使用customer\u group\u id,还有一些情况下,他们会将“1”作为他们的id之一。。。除此之外,我看不到任何其他通用性外键约束简而言之,catalogrule_customer_group.customer_group_id中提到的所有值都应该存在于customer_group.customer_group_id中。它们似乎是两组完整的数据,其中一组中的customer id行的工作方式类似于0,0,0,0,1,1,1,1,1,2,2,3。。另一个是1,2,3,6,7,8,9,11,17,19,20。。我是否应该在第一组中添加填充行以模拟6、7、8、9等等?或者这是一个可怕的想法?再次感谢你的帮助
CONSTRAINT `FK_CATRULE_CSTR_GROUP_CSTR_GROUP_ID_CSTR_GROUP_CSTR_GROUP_ID` 
FOREIGN KEY (`customer_group_id`) 
REFERENCES `customer_group` (`customer_group)
   ALTER TABLE catalogrule_customer_group
   DROP FOREIGNKEY FK_CATRULE_CSTR_GROUP_CSTR_GROUP_ID_CSTR_GROUP_CSTR_GROUP_ID;