jOOQ loadInto 不会在外键约束上抛出错误失败

Posted

技术标签:

【中文标题】jOOQ loadInto 不会在外键约束上抛出错误失败【英文标题】:jOOQ loadInto not throwing error on foreign key constraint fail 【发布时间】:2021-07-23 09:17:43 【问题描述】:

我正在将一些表从数据库迁移到另一个(mysql 5.7、jOOQ 3.10),并使用以下代码插入:

try 
     myDatabase
         .loadInto(MYTABLE)
         .onErrorAbort()
         .batchAll()
         .loadRecords(rows)
         .fields(MYTABLE.fields())
         .execute();
  catch (Exception e) 
     e.printStackTrace();
 

此表对另一个表有 FK 约束,如果填充了另一个表,则插入工作。但是,如果我不先填充另一个表,我不会收到任何错误,程序“成功”完成,但没有插入任何行。

尝试通过终端/datagrip 执行相同的插入会给我预期的 FK 错误

编辑:也尝试使用.onErrorAbort()(添加到示例代码中)

【问题讨论】:

那很好,请在下面接受我的回答。 我昨天尝试接受但没有工作。现在它起作用了。再次感谢! 【参考方案1】:

你可以通过做检查加载器的错误

// The errors that may have occurred during loading 
List<LoaderError> errors = loader.errors(); 
// loop if you want
LoaderError error = errors.get(0);

【讨论】:

以上是关于jOOQ loadInto 不会在外键约束上抛出错误失败的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Hibernate 允许我在外键约束上插入空值?

Oracle SQL Developer - 在外键上添加约束

Oracle数据库之SQL基础

带有连接表的 MySQL 外键约束(具有相同外键约束时出错)

添加外键约束时出错

jOOQ:在特定表中查找约束