gpt4 book ai didi

java - DBUnit 在 H2 表中插入时间戳默认值解析错误

转载 作者:行者123 更新时间:2023-12-02 05:13:02 27 4
gpt4 key购买 nike

当我尝试使用 DBUnit 将记录插入 H2 表时,出现以下异常:

Caused by: org.h2.jdbc.JdbcSQLException: 
Cannot parse "TIMESTAMP" constant "1970-00-01";
SQL statement: insert into PUBLIC.TABLE (COLX, COLY, COLZ) values (?, ?, ?)
Caused by: java.lang.IllegalArgumentException:
1970-0-1 at org.h2.util.DateTimeUtils.parseDateValue(DateTimeUtils.java:276)

没有一个值适用于所需的时间戳列,因此 dbUnit 似乎尝试插入一个默认值,这会引发问题。注意:1970-0-1 不是表格描述中的 1970-00-01(见下文)。

我不确定在哪里可以配置该行为。无论如何,她是我的一些设置,可以帮助识别错误:

创建声明:

create table MYTABLE (
"UUID" binary default random_uuid() not null,
"COL2" varchar(18) not null,
"COL3" varchar(20),
"COL4" timestamp default '1970-00-01',
...

DataSet XML(如上所述,三个值不包括时间戳列)

<dataset>
<MYTABLE COLX="text" COLY="1" COLZ="Text"/>

我也设置了

dbConfig.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new H2DataTypeFactory());

我想到了两种可能性: 1. dbUnit 是否尝试解析列信息中的值? 2. dbUnit 中是否有标准的默认时间戳/日期字段生成器?

那么我需要做什么才能获得正确的默认值将被插入?

最佳答案

没有月份 0。一月是月份 1。因此您需要使用 '1970-01-01' 而不是 '1970-00-01'

关于java - DBUnit 在 H2 表中插入时间戳默认值解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27190580/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com