我有一个Model类,它有一个引用同一Model类的另一个实例的属性。它基本上是一个模型中的树形结构。
当我尝试执行MyModel.deleteAll()时,它会失败,因为外键约束失败。
是否有某种方法可以轻松地为deleteAll查询暂停此约束?
由于我使用的是mysql,我发现的唯一解决方法是发出一个TRUNCATE语句,mysql会立即接受。
提前致谢, 埃文
异常详情:
org.javalite.activejdbc.DBException:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:无法删除或更新父行:外键约束失败(visibledb_testing
。accountabilities
,CONSTRAINT accountabilities_prototype_id
FOREIGN KEY(prototype_id
)参考accountabilities
(id
)),查询:DELETE FROM accountabilities
答案 0 :(得分:0)
Model#deleteAll()
只生成SQL DELETE FROM YOURTABLE
。
如果您可以在MySQL控制台上运行它,它将在模型中运行。如果您遇到约束违规,也许您想要:
Base.exec("TRUNCATE " + MyModel.getTableName());
或者,您可以尝试http://javalite.io/delete_cascade#method-deletecascade。小心 - 这是一种强大但危险的方法,只有在阅读完所有文档后才能使用。