Sah*_*hah 12 mysql foreign-keys cascading-deletes sql-delete
我已经MySQL Server 5.1.62
安装在生产服务器上.我每天都在监视mysql服务器的错误日志文件,突然间我在错误日志文件中发现了以下错误.
InnoDB:无法删除/更新超过最大深度250的级联外键约束的行
请减少过多的外部约束并再试一次
我有一个带有主键的数据库结构-具有正确更新/删除操作的外键关系,如果父表中的数据被应用程序删除或手动(后端),我需要删除子表的数据.
我用谷歌搜索了这个问题,但我找不到合适的解决方案.我该如何解决这个问题?
我同意@Devart 和@Catcall 的原始答案,但我想在与OP 交换一些评论后添加一些内容。
首先,我将架构图像表示减少为仅DELETE
受tbl_indentmaster
.
据我所知,此模式图中没有循环 FK 引用。
此外,OP 运行了以下查询:
DELETE FROM tbl_indentmaster WHERE indentId IN (1,2,3,4,5,6,...,150,151,155,156,....)
Run Code Online (Sandbox Code Playgroud)
要删除的行数量非常多。在进一步询问时,OP 声称该查询适用于 的较小indentId
子集。
由此我想我们可以有两种可能:
CASCADE DELETE
像您这样的大型查询失败。请注意,我建议可能存在新的错误,而不是[已发布][2]。理想情况下,要删除的行数应该不重要。indentId
条目tbl_indentmaster
导致整个查询失败。我建议您首先尝试诊断问题,考虑到第 (2) 点是真正的罪魁祸首。您可以将DELETE
查询分成更小的块并找到有问题的 ID。
如果这个脚本必须通过代码定期执行(在较大的应用程序中),那么您应该考虑以较小的块执行查询(在我看来,每个查询可能有 15 个 id 是一个好的开始)。除了这样做之外,我建议在日志文件中记录带有违规 ID 的错误,以便您准确地知道哪些条目失败。
归档时间: |
|
查看次数: |
1845 次 |
最近记录: |