教义外键级联删除/更新超过最大深度15

时间:2018-07-17 15:08:01

标签: php mysql symfony doctrine

我正在使用Symfony:2.8和doctrine-bundle:1.5。

我的学说关联映射是一对多,自引用双向One-To-Many, Self-referencing

这是我的代码:

/**
 * @OneToMany(targetEntity="Ranking", mappedBy="parent")
 */
private $children;

/**
 * @var Ranking
 *
 * @ManyToOne(targetEntity="Ranking", inversedBy="children")
 *
 * @JoinColumn(name="parent_id", referencedColumnName="id", onDelete="cascade")
 */
private $parent;

当我尝试删除行时,出现此错误:一般错误:3008外键级联删除/更新超过了最大深度15。”

我的问题是我有什么办法可以增加教义的最大深度。 预先感谢。

1 个答案:

答案 0 :(得分:1)

不,您不能。 实际上,这是MySQL的限制,而不是教义。

https://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html

  

如果ON UPDATE CASCADE或ON UPDATE SET NULL递归以更新相同   它先前在层叠期间已更新的表,其行为类似于   限制。这意味着您不能使用自引用的ON UPDATE   CASCADE或ON UPDATE SET NULL操作。这是为了防止无限   级联更新导致的循环。自我引用的DELETE   另一方面,可以使用SET NULL,也可以使用自引用ON   删除级联。 级联操作嵌套的数量不能超过15   水平深