【问题标题】:deleteAll doesn't work with foreign keys to other rows in same tabledeleteAll 不适用于同一表中其他行的外键
【发布时间】:2017-04-26 04:40:09
【问题描述】:

我有一个 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) REFERENCES accountabilities (id)),查询:DELETE FROM accountabilities

【问题讨论】:

    标签: activejdbc javalite


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-02-01
      • 1970-01-01
      • 2017-02-13
      • 2021-07-22
      • 2011-06-11
      • 2020-03-05
      • 1970-01-01
      • 1970-01-01
      • 2012-02-14
      相关资源
      最近更新 更多