gpt4 book ai didi

java - 数据截断 : Incorrect datetime value

转载 作者:行者123 更新时间:2023-11-30 21:43:56 25 4
gpt4 key购买 nike

我在一个使用 mysql 数据库的 spring 项目中工作。当应用程序在我的本地运行时,每个插入和更新 sql 命令都在项目的后端运行时,我得到了“datetime”变量的这些类型异常;

Caused by: java.sql.BatchUpdateException: Data truncation: Incorrect datetime value: '' for column 'CREATION_DATE' at row 1 at com.mysql.jdbc.ServerPreparedStatement.executeBatch(ServerPreparedStatement.java:665) at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70) at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268) ... 54 more

Mysql 版本:5.7.18,mysql-connector-java 版本:-5.1.38,用户时区在 tomcat 7 虚拟机参数和数据库时区中为“-Duser.timezone=Europe/Istanbul”:GMT +3

示例代码块;

        ResponseCreateTicket response = new ResponseCreateTicket();
TicketDTO ticket=new TicketDTO();
ticket.setTicketNumber(UUID.randomUUID().toString().toUpperCase(Locale.ENGLISH));
ticket.setStatus(TicketStatus.UNCOMPLETED.toString());
Date date = new Date();
ticket.setCreatedOn(date);
ticket.setReferenceNumber(request.getReferenceNumber());
getTicketDAO().createTicket(ticket);
response.setTicketNumber(ticket.getTicketNumber());
return response;

sql hibernate显示和绑定(bind)参数;

Hibernate: insert into eis_ticket (TICKET_NUMBER, STATUS, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE, REFERENCE_NUMBER, ID) values (?, ?, ?, ?, ?, ?, ?, ?) 2018-05-16 10:57:37 TRACE BasicBinder:? - binding parameter [1] as [VARCHAR] - 9BF25A08-C442-45FA-A95F-8E59502CE037 2018-05-16 10:57:37 TRACE BasicBinder:? - binding parameter [2] as [VARCHAR] - UNCOMPLETED 2018-05-16 10:57:37 TRACE BasicBinder:? - binding parameter [3] as [VARCHAR] - 2018-05-16 10:57:37 TRACE BasicBinder:? - binding parameter [4] as [TIMESTAMP] - Wed May 16 10:57:32 EEST 2018 2018-05-16 10:57:37 TRACE BasicBinder:? - binding parameter [5] as [VARCHAR] - 2018-05-16 10:57:37 TRACE BasicBinder:? - binding parameter [6] as [TIMESTAMP] - 2018-05-16 10:57:37 TRACE BasicBinder:? - binding parameter [7] as [VARCHAR] - b4be9b87-21c4-4001-b80d-244420ab2e00 2018-05-16 10:57:37 TRACE BasicBinder:? - binding parameter [8] as [BIGINT] - 1925 2018-05-16 10:57:37 ERROR JDBCExceptionReporter:? - Data truncation: Incorrect datetime value: '' for column 'CREATION_DATE' at row 1

日期格式可以更改为“yyyy-MM-dd HH:mm:ss”,但项目中有数百种此类代码,因此这不是正确的解决方案。是什么导致了这个问题? Mysql 连接器已更新但无法正常工作。

最佳答案

如果列类型是日期时间,您可以轻松修改列并将默认设置为 CURRENT_TIMESTAMP,这将确保插入的每条记录都默认为当前服务器日期和时间。但是,如果您手动生成时间戳,则应用程序生成的数据类型与插入数据库时​​使用的数据类型不同您可以使用它来修改列默认值,然后在插入记录时保留 creation_type 列 NULL

ALTER TABLE table MODIFY CREATION_DATE TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;

关于java - 数据截断 : Incorrect datetime value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50353468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com