我们做数据库/数据集比较。
源DB: Server
目标DB: SAP HANA
错误消息
org.dbunit.assertion.DbComparisonFailure:不兼容的数据类型:(table=dataset,col=JobId) 预期:,但是:
工作:cast(JobId as varchar(36)) JobId
,但为什么会出现此错误呢? JobId定义为源表中的varchar(36)。
如何使此工作(生成SQL并手动添加强制转换非常麻烦)
发布于 2017-12-05 01:47:37
纵观谷歌的结果,这似乎是MS列类型的一个常见问题。见http://dbunit.wikidot.com/mssql。
在那里,他们基本上将类型映射放在DBUnit工厂代码中,而不是对每一列进行强制转换:公共类MsSqlDataTypeFactory扩展了DefaultDataTypeFactory {公共静态instead = -9;公共静态instead= -11;
public DataType createDataType(int sqlType, String sqlTypeName) throws DataTypeException
{
if (sqlType == NVARCHAR)
{
return DataType.VARCHAR;
}
if (sqlType == UNIQUEIDENTIFIER)
{
return DataType.VARCHAR;
}
return super.createDataType(sqlType, sqlTypeName);
}
}发布于 2017-12-05 13:33:00
感谢Lars Br的回答:
我提出了以下解决方案:
public DataType createDataType(int sqlType, String sqlTypeName) throws DataTypeException
if(sqlType == Types.CHAR) { if =={返回新UniqueIdentifierType();}
至
(UniqueIdentifierType.UNIQUE_IDENTIFIER_TYPE.equals(sqlTypeName))不生成/*,因为它不匹配SAP (sqlType == Types.CHAR) { if {返回新UniqueIdentifierType();} }*/https://stackoverflow.com/questions/47632068
复制相似问题