我试图将 java Instant 类型保存在 Timestamp 类型的 mysql 列中。但是我收到 MysqlDataTruncation 异常,如下所示。尽管该列允许 Null 值,但当我尝试为同一列传递 Null 值时。我仍然遇到同样的异常
Caused by: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Incorrect datetime value: '1732583454.419425000' for column 'created_at' at row 1
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:104)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1098)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1046)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1371)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:1031)
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:194)
... 151 common frames omitted
对此的任何帮助将不胜感激。预先感谢。
根据日志输出中的值,
1732583454.419425000
,您拥有纳秒精度,MySql 可能无法存储。 您可以尝试使用 timestampInstant.truncateTo(ChronoUnit.MICROS)
将时间戳传递到持久层来截断时间戳吗?