我正在使用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
。
请提出任何想法,我可以尝试除了这个。提前感谢!
这是作为Teiid问题捕获的:https://issues.redhat.com/browse/Teiid-5949
建议了一个对象类型映射的解决方案,但可能应该通过更新导入逻辑来解决。