[英]DBUnit inserting Timestamp default value in H2 Table parsing error
当我尝试使用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)
这些值都不是必需的timestamp列的值,因此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(如上所述,这三个值不包括timestamp列)
<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'
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.