提问者:小点点

无法使用Teiid在SQL Server的datetimeoffset列中插入null


我正在使用Teiid在DateTimeOffsite列中插入null值,但是PreparedStatement.setNULL(index,types.timestamp)没有插入null。我得到的错误是:

原因:java.sql.sqlexception:远程com.microsoft.sqlserver.jdbc.sqlserverexception:不允许从数据类型varbinary到datetimeoffset的隐式转换。使用CONVERT函数运行此查询。

在com.microsoft.sqlserver.jdbc.sqlserverexception.makefromdatabaseError(sqlserverexception.java:262)
在com.microsoft.sqlserver.jdbc.sqlserverstatement.getnextresult(SqlServerStatement.java:1632)
在在com.microsoft.sqlserver.jdbc.tdscommand.execute(iobuffer.java:7225)
在com.microsoft.sqlserver.jdbc.sqlserverconnection.executeCommand(sqlserverconnection.java:3053)
在com.microsoft.sqlserver.jdbc.sqlserverstatement.executeCommand(sqlserverstatement.java:247)
在lserverPreparedStatement.java:471)
位于org.jboss.jca.adapters.jdbc.wrappedPreparedState在org.teiid.translator.jdbc.jdbcupdateExecution.ExecuteTranslatedCommand(jdbcupdateExecution.java:315)...27个常见帧被省略

以下是SQL Server 2012版本的数据源详细信息:

<driver name="sqlserver" module="com.microsoft.sqlserver">
    <driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
    <xa-datasource-class>com.microsoft.sqlserver.jdbc.SQLServerXADataSource</xa-datasource-class>
</driver>

驱动程序版本为:MSSQL-JDBC-8.2.0.jre8

我已经尝试在没有Teiid的情况下插入null(通过使用Microsoft jdbc驱动程序建立sql连接),它正在工作。该表仅包含一列,其数据类型为DateTimeOffsite

请提出任何想法,我可以尝试除了这个。提前感谢!


共1个答案

匿名用户

这是作为Teiid问题捕获的:https://issues.redhat.com/browse/Teiid-5949

建议了一个对象类型映射的解决方案,但可能应该通过更新导入逻辑来解决。