首页 > 解决方案 > FF4j + MS SQL:获取“操作数类型冲突 datetime2 与时间戳不兼容”异常

问题描述

我的项目结构:Spring Boot + DB:MS SQL + FF4j (FeatureStoreSpringJdbc)

创建表架构如下 url https://github.com/ff4j/ff4j/blob/master/ff4j-core/src/main/resources/schema-ddl.sql

获取“操作数类型冲突 datetime2 与时间戳不兼容”访问“/api/ff4j”rest api 时出现异常有什么办法可以解决这个问题

异常堆栈跟踪:org.springframework.jdbc.UncategorizedSQLException:PreparedStatementCallback;SQL [SELECT count(EVT_UUID) as NB, EVT_NAME FROM FF4J_AUDIT WHERE (EVT_TYPE LIKE 'feature') AND (EVT_ACTION LIKE 'checkOn') AND (EVT_TIME> ?) AND (EVT_TIME< ?) GROUP BY EVT_NAME] 的未分类 SQLException;SQL状态[S0002];错误代码[206];操作数类型冲突:datetime2 与时间戳不兼容;嵌套异常是 com.microsoft.sqlserver.jdbc.SQLServerException:操作数类型冲突:datetime2 与时间戳不兼容

在 org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:89)

在 org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)

在 org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)

在 org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1443)

在 org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:633)

在 org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:669)

在 org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:700)

在 org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:712)

在 org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:768)

在 org.ff4j.springjdbc.store.EventRepositorySpringJdbc.computeHitCount(EventRepositorySpringJdbc.java:151)

在 org.ff4j.springjdbc.store.EventRepositorySpringJdbc.getFeatureUsageHitCount(EventRepositorySpringJdbc.java:119)

在 org.ff4j.audit.repository.AbstractEventRepository.getFeatureUsagePieChart(AbstractEventRepository.java:58)

在 org.ff4j.services.domain.EventRepositoryApiBean.initialize(EventRepositoryApiBean.kt:55)

在 org.ff4j.services.domain.EventRepositoryApiBean.(EventRepositoryApiBean.kt:46)

在 org.ff4j.services.domain.FF4jStatusApiBean.(FF4jStatusApiBean.kt:66)

在 org.ff4j.services.FF4jServices.getStatus(FF4jServices.kt:40)

在 org.ff4j.spring.boot.web.api.resources.FF4jResource.getStatus(FF4jResource.kt:55)

在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(未知来源)

在 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)

标签: javasql-serverspring-bootmssql-jdbcff4j

解决方案


通过更改 MsSql 的查询并添加了新脚本来修复它。

请参考:https ://github.com/ff4j/ff4j/issues/456


推荐阅读