【问题标题】:Unitils dataset - insert into sybase datetime columnUnitils 数据集 - 插入 sybase 日期时间列
【发布时间】:2013-01-07 16:43:03
【问题描述】:

我有一个 unitils 数据集尝试将数据输入到 sybase 日期时间列中,但是当我尝试运行单元测试时它出错了。

我在网上找不到任何关于插入日期的信息,所以我尝试以与其他列相同的方式将其声明为字符串,但出现错误:

org.unitils.core.UnitilsException: Error inserting test data from DbUnit dataset for method etc etc
    at org.unitils.dbunit.DbUnitModule.insertDataSet(DbUnitModule.java:156)
    at org.unitils.dbunit.DbUnitModule$DbUnitListener.beforeTestSetUp(DbUnitModule.java:556)
    at org.unitils.core.Unitils$UnitilsTestListener.beforeTestSetUp(Unitils.java:273)
    at org.unitils.UnitilsJUnit4TestClassRunner$TestListenerInvokingMethodRoadie.runBeforesThenTestThenAfters(UnitilsJUnit4TestClassRunner.java:151)
    at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:84)
    at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:49)
    at org.unitils.UnitilsJUnit4TestClassRunner.invokeTestMethod(UnitilsJUnit4TestClassRunner.java:95)
    at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:61)
    at org.unitils.UnitilsJUnit4TestClassRunner.access$000(UnitilsJUnit4TestClassRunner.java:44)
    at org.unitils.UnitilsJUnit4TestClassRunner$1.run(UnitilsJUnit4TestClassRunner.java:62)
    at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34)
    at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44)
    at org.unitils.UnitilsJUnit4TestClassRunner.run(UnitilsJUnit4TestClassRunner.java:68)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: org.unitils.core.UnitilsException: Error while executing DataSetLoadStrategy
    at org.unitils.dbunit.datasetloadstrategy.impl.BaseDataSetLoadStrategy.execute(BaseDataSetLoadStrategy.java:46)
    at org.unitils.dbunit.DbUnitModule.insertDataSet(DbUnitModule.java:230)
    at org.unitils.dbunit.DbUnitModule.insertDataSet(DbUnitModule.java:153)
    ... 18 more
Caused by: org.dbunit.dataset.datatype.TypeCastException: Error casting value for table 'USER' and column 'SUSPEND_SD'
    at org.dbunit.operation.AbstractBatchOperation.execute(AbstractBatchOperation.java:202)
    at org.dbunit.operation.CompositeOperation.execute(CompositeOperation.java:78)
    at org.unitils.dbunit.datasetloadstrategy.impl.CleanInsertLoadStrategy.doExecute(CleanInsertLoadStrategy.java:45)
    at org.unitils.dbunit.datasetloadstrategy.impl.BaseDataSetLoadStrategy.execute(BaseDataSetLoadStrategy.java:44)
    ... 20 more

在我的数据集中插入日期的唯一行是:

<USER ID="4" FULL_NAME="user3" SUSPEND_SD="25/12/2011 00:00" SUSPEND_ED="25/12/2013 00:00" PASSWORD="password3"/>

谁能帮忙?

提前致谢。

【问题讨论】:

    标签: datetime dataset sybase unitils


    【解决方案1】:

    好的,事实证明它必须完全采用 YYYY-MM-DD HH:MM:SS 格式,例如“2011-01-01 02:00:00”。

    【讨论】:

      【解决方案2】:

      我不知道 unitils 是如何工作的,但假设您的数据集是可编辑的,为什么不将日期更改为 yyyy/mm/dd 格式。

      那个 java 堆栈提到了强制转换,我认为将 dd/mm/yyyy 转换为 datetime 会失败。

      或者,中间件可能有一些日期配置方式 - 你可能会告诉它日期是英国的(甚至可能是区域设置?)

      【讨论】:

      • 谢谢,但仍然是同样的错误 :(。我认为这是因为它被声明为字符串,但是我还能如何从数据集的日期列中插入一些东西??
      猜你喜欢
      • 1970-01-01
      • 2023-03-30
      • 2011-04-21
      • 1970-01-01
      • 2019-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多