0

我有一个 Model 类,该类具有引用同一 Model 类的另一个实例的属性。它基本上是一个模型中的树结构。

当我尝试执行 MyModel.deleteAll() 它失败,因为外键约束失败。

有没有办法轻松地暂停 deleteAll 查询的这个约束?

由于我使用的是 mysql,因此我发现的唯一解决方法是发出 TRUNCATE 语句,mysql 立即接受该语句。

在此先感谢,埃文

异常详情:

org.javalite.activejdbc.DBException:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:无法删除或更新父行:外键约束失败(visibledb_testing. accountabilities,CONSTRAINT accountabilities_prototype_idFOREIGN KEY(prototype_id)REFERENCES accountabilitiesid)),查询:DELETE FROM问责制

4

1 回答 1

0

Model#deleteAll()只需生成DELETE FROM YOURTABLESQL 。如果您可以在 MySQL 控制台上运行它,它将在模型中运行。如果您遇到约束违规,也许您想要:

Base.exec("TRUNCATE " + MyModel.getTableName());

或者,您可以尝试http://javalite.io/delete_cascade#method-deletecascade。小心-这是一种强大但危险的方法,只有在阅读所有文档后才能使用。

于 2017-04-26T05:28:38.060 回答