当前位置: 首页 > 知识库问答 >
问题:

Jooq未引发故障异常

督宏旷
2023-03-14

我正在使用Jooq将CSV数据填充到我的数据库中。如果我提供“字符串值”而不是Int,它不会将值输入数据库,但同时也不会抛出错误。我如何知道上传是否失败。如何处理这些类型的异常。此外,如果我尝试在int列中给出字符串,有没有办法检查/抛出警告。

版本:3.8.x

Connection connection = getConnection()
try(Connection connection = getConnection()) {
            DSLContext create = DSL.using(connection, SQLDialect.MYSQL);

            create.loadInto(Tables.PROCESS_QUEUE_MAP)
                    .loadCSV(new File("/my/folder/testInput.csv"))
                    .fields(Tables.PROCESS_QUEUE_MAP.PROCESS_QUEUE_ID,
                            Tables.PROCESS_QUEUE_MAP.PROCESS_NAME,
                            Tables.PROCESS_QUEUE_MAP.QUEUE_NAME,
                            Tables.PROCESS_QUEUE_MAP.MARKEPTLACE,
                            Tables.PROCESS_QUEUE_MAP.QUEUE_TYPE,
                            Tables.PROCESS_QUEUE_MAP.CREATED_BY,
                            Tables.PROCESS_QUEUE_MAP.CREATED_TIME,
                            Tables.PROCESS_QUEUE_MAP.LAST_MODIFIED_BY,
                            Tables.PROCESS_QUEUE_MAP.LAST_MODIFIED_TIME)
                    .execute();

        } catch(Exception ex) {
            ex.printStackTrace();
        }
    }

共有1个答案

隗轶
2023-03-14

默认情况下,加载器API会引发从底层数据库或JDBC驱动程序引发的各种异常。这可以通过指定来配置和覆盖:

  • 加载选项步骤。onErrorAbort()(默认值)

这只影响JDBC错误,不影响数据加载“错误”

由于历史原因,在整个jOOQ API中,数据类型之间的自动转换是“宽松的”而不是“快速失败的”。所有数据类型转换都通过Convert实用程序,如果数据类型转换失败,该实用程序返回null。例如,当调用Convert.convert(Object, Class)时,以下测试将通过:

assertNull(Convert.convert("abc", int.class));

这在过去受到了批评,但由于向后兼容性,无法在jOOQ API中轻松更改。

解决方法包括:

  • 自己解析CSV内容
 类似资料:
  • 我正在开发一个小型的camel应用程序,它从文件中读取数据,并将数据写入数据库。一切正常。现在,我想在其中添加DB故障转移功能,这意味着当将数据写入DB时,如果DB由于网络故障(或者某人关闭了DB)而不可用,我的应用程序应该重试5次,间隔1000毫秒,如果到那时DB已经启动或者(网络连接重新建立)应用程序应该继续,或者到那时DB还没有恢复,应用程序应该关闭。现在,我最初尝试了Camel的重新传递特

  • 我正在尝试使用@Valid验证我的JPA实体,如下所示: 它工作了一段时间,但现在它停止工作,我不知道为什么。我试着在< code>persist方法中手动执行,它按预期工作: 可能会发生什么情况,或者我该如何调试?

  • 当我们尝试用Null值获取数据时 IN子句获得空指针异常。 也许是因为这个。 在数据库中,我们可以提供null in IN子句。 jooq中存在一个“无法修复”的问题https://github.com/jOOQ/jOOQ/issues/3867 有一些替代方案: 在输入前检查null(在我的情况下,这是一个非常大的select语句) 所以如果我想让这成为可能,还有其他的解决方法吗。 注:类似的情

  • 因此,我刚刚从bootswatch复制了navbar表单的代码片段,并直接导入了所需的JQuery、bootstrap css和js文件,如下面的代码片段所示。当浏览器调整大小时,它会做出响应,但当我单击按钮以获取导航栏的下拉菜单时,它会出现故障,不会下降并停留在那里,而是自动切换回原来的状态。 代码中没有任何调整或更改,它在bootswatch网站上运行良好,但这里没有。有人能解释一下原因并给出

  • 我在构建APK时收到此错误。 试图使缓存无效并重新启动android studio。重建项目,但没有一个适合我。

  • 主要内容:一、业务场景介绍,二、问题凸现,三、定位问题,四、解决问题这篇文章给大家聊一次线上生产系统事故的解决经历,其背后代表的是线上生产系统的JVM FullGC可能引发的严重故障。 一、业务场景介绍 先简单说说线上生产系统的一个背景,因为仅仅是文章作为案例来讲,所以弱化大量的业务背景。 简单来说,这是一套分布式系统,系统A需要将一个非常核心以及关键的数据通过网络请求,传输给另外一个系统B。 所以这里其实就考虑到了一个问题,如果系统A刚刚将核心数据传递给了系统B