java.sql.SQLException: Zero date value prohibited 异常的解决方法

Java 与 MyBatis 开发中 MySQL Zero Date 错误剖析与应对 在 Java 与 MyBatis 开发中,“Zero Date” 错误是 MySQL 数据库应用开发过程中常见的问题,它源于数据录入的不规范、MyBatis 配置的不合理以及数据库配置的变化。通过完善数据录入的校验逻辑、优化 MyBatis 配置、合理调整数据库配置以及清理现有无效数据等方法,能够有效地解决这一问题。在实际开发中,要养成良好的开发习惯,严格把控数据质量,从而减少此类错误的发生,确保基于 Java 和 MyBatis 的数据库应用稳定、高效地运行。 阅读详情
AI摘要

本文介绍了解决MyBatis查询中遇到的零日期异常方法。通过在JDBC连接字符串中添加zeroDateTimeBehavior参数,并设置为convertToNull,可以避免因无效日期导致的SQLException异常。

使用MyBatis查询数据时候遇到这个异常,stackoverflow上一条回答解决办法是通过给jdbc链接增加zeroDateTimeBehavior参数来解决。

实际的错误还应该有:
java.sql.SQLException: Value ‘0000-00-00’ can not be represented as java.sql.Date

jdbc:mysql://yourserver:3306/yourdatabase?zeroDateTimeBehavior=convertToNull

随后查阅了官方手册,给出的解释如下。

zeroDateTimeBehavior What should happen when the driver encounters
DATETIME values that are composed entirely of zeros (used by MySQL to
represent invalid dates)? Valid values are “exception”, “round” and
“convertToNull”. Default: exception Since version: 3.1.4
http://dev.mysql.com/doc/connector-j/5.1/en/connector-j-installing-upgrading-3-0-to-3-1.html

设置zeroDateTimeBehavior 属性,当遇到DATETIME值完全由0组成时,最终的有效值可以设置为,异常(exception),一个近似值(round),或将这个值转换为null(convertToNull)。

随后近一步查阅手册,三个参数的详细解释如下。

exception (the default), which throws an SQLException with an SQLState
of S1009.
convertToNull, which returns NULL instead of the date.
round, which rounds the date to the nearest closest value which is
0001-01-01.
http://dev.mysql.com/doc/connector-j/5.1/en/connector-j-installing-upgrading-3-0-to-3-1.html

默认情况为exception,设置这个属性会抛出一个SQLException异常,其SQLSate码为S1009。这个状态码在写存储过程处理异常时也可以用到。

convertToNull,返回null来替代0000-00-00这样的日期。

round,将日期转换为0001-01-01。

因此,出现0000-00-00 属于一个无效日期,用convertToNull属性即可。

Mysql 的时区问题:zeroDateTimeBehavior CONVERT_TO_NULL convertToNull 1.背景 执行mysql 8 连接测试,单独的测试类 maven如下 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.11&... 阅读详情

相关推荐

163种中草药图像数据集构建与ResNet-50迁移学习实战指南

在计算机视觉领域,高质量标注数据集是模型训练的基石,直接影响图像分类、目标检测等任务的性能。其核心原理在于为算法提供结构化的监督信号,通过深度学习模型学习从像素到语义的映射关系。构建此类数据集的技术价值在于解决了特定垂直领域(如中医药)数据稀缺的痛点,为AI技术落地提供了关键“燃料”。在应用场景上,标准化数据集广泛支撑着教学演示、算法验证和产业应用开发。本文聚焦于中草药识别这一细分领域,详细介绍了一个包含163种常见药材、经过多源聚合与清洗的图像数据集构建全过程,并提供了基于PyTorch和ResNet-5

weixin_33672400的博客 454

Zero date value prohibited

最近使用MyBatis时发现了java.sql.SQLException: Zero date value prohibited 的异常,网上查了一下原因。其实是Mysql数据库在面对0000-00-00 00:00:00日期的处理时,如果没有设置对应的对策,就会产生异常。 所以解决的方法是在jdbcUrl中设置处理zeroDateTimeBehavior来处理,一般有下面几种: 1.driv...

程序员资料站 4万+

从贝叶斯网络到结构因果模型:因果推理在可解释AI中的实践

在机器学习和数据分析领域,理解变量间的因果关系而不仅仅是统计关联,是构建可信赖、可解释系统的关键。概率图模型,特别是贝叶斯网络,通过有向无环图和条件概率表,能够高效地编码和推理变量间的条件依赖关系,广泛应用于医疗诊断、风险评估等场景。然而,贝叶斯网络主要刻画的是“是什么”的关联,难以回答“如果…会怎样”的因果问题。为了进行因果推断,需要引入结构因果模型和do-演算,它们通过定义结构方程和模拟干预操作,能够区分混杂效应,估计处理变量对结果变量的净因果影响。这一套方法论对于可解释人工智能至关重要,它能生成反事实

weixin_42168902的博客 379

Zero date value prohibited 异常处理

项目场景: 在项目中,我们会时常遇到数据查询,今天在对数据进行查询的时候,遇到一个之前闻所未闻的异常,所以记录下来,分享给大家。 问题描述 查询数据为datetime类型的数据时,发现该字段的值为‘0000-00-00 00:00:00’,抛Zero date value prohibited 异常 原因分析: 大家都知道,程序中的时间都是从1900-01-01 00:00:00开始,因此小于这个值都会报错, 解决方案: 既然我们知道了问题的所在,那就可以对症下药。 抛该异常的原因是因为‘0000

JAVA_AK47的博客 7098

如何使用Qt的PIMPL习惯用法(PIMPL Idiom

PIMPL是指“Pointer to IMPLementation”(指向实现的指针),意味着将实现细节隐藏起来,用户类无需关注这些实现细节。在Qt中常用PIMPL习惯用法来清晰地区分接口与实现,尽管Qt官方文档并未详细说明该机制。本文将演示如何在Qt中使用PIMPL习惯用法,并以一个简单的坐标输入对话框作为实例。

电脑管家 1033

C/C++李峋同款跳动的爱心代码(完整代码)

C++语言实现出李峋同款跳动的爱心的完整代码。

AIGC 10万+

Cause: java.sql.SQLException: Zero date value prohibited 异常解决方法

一、原因 使用Mybatis查询一条数据时 返回 异常如下: org.springframework.dao.TransientDataAccessResourceException: Error attempting to get column 'update_time' from result set. Cause: java.sql.SQLException: Zero date valu...

zgz15515397650的博客 9830

随机优化 (Stochastic Optimization) 算法详解及案例分析

随机优化是一种用于处理包含随机变量的优化问题的方法。其目标是通过考虑随机变量的概率分布,找到一个在期望意义下最优的解。

闲人编程的博客 4178

解决java.sql.SQLException: Zero date value prohibited

点击第二页的时候报错java.sql.SQLException: Zero date value prohibited 前端页面报错如图: 后端报错如图: 控制台: org.springframework.dao.TransientDataAccessResourceException: Error attempting to get column 'gmt_creat...

牧牛人Alec 6228

MFC 中实现 WebSocket 客户端以支持实时双向通信

3. **协议兼容**:若服务器使用 `wss://`(加密),需在 `lws_client_connect_info` 中配置 SSL 相关参数(`ssl_connection = LCCSCF_USE_SSL`)。- 编辑框(`m_editUrl`):输入 WebSocket 服务器地址(如 `ws://echo.websocket.events`)。2. 将编译后的库文件(`.lib`、`.dll`)和头文件路径添加到 MFC 项目中(项目属性 -> VC++ 目录)。// UI:服务器地址。

寒寒豆豆软件公司的博客 202

实战复盘:纷玩岛(Livelab)候补订单微信支付协议的逆向与复现

通过本次对纷玩岛候补支付接口的分析,我们实现了一个脱离 App UI 的轻量级支付发起器。这不仅验证了其API的设计逻辑(Standby -> PrePayInfo 分层设计),也为后续的自动化监控或辅助抢票工具提供了支付环节的技术验证。技术本无罪,关键在于如何使用。理解这些底层协议,有助于我们写出更健壮的代码,也能在遇到线上支付问题时快速定位是业务层(API)问题还是通道层(微信)问题。

猫敷雪 795

java.sql.SQLException: Zero date value prohibited

java.sql.SQLException: Zero date value prohibited:禁止零日期值。 使用JPA检索数据库表中日期字段时报此错误,去数据库表中查询该日期字段,发现有 0000-00-00 00:00:00 的值,随机更新一个时间后不再报错。 解决方法: 1、修改日期为 0000-00-00 00:00:00 的字段值,根据实际情况设置为 null 或 其他日期 2、在 jdbcUrl 中设置对应的对策 driver-url=jdbc:mysql://localhost

星空_灯塔的博客 3936

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

MySQL查询报错:Cause: java.sql.SQLException: Zero date value prohibited ; Zero date value prohibited

Cause: java.sql.SQLException: Zero date value prohibited

weixin_43920711的博客 2311

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Mybatis : Cause: java.sql.SQLException: Zero date value prohibited

完整报错如下: Caused by: org.springframework.dao.TransientDataAccessResourceException: Error attempting to get column 'receipt_time' from result set. Cause: java.sql.SQLException: Zero date value prohibited ; Zero date value prohibited; nested exception is java

FightingITPanda的博客 811

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【数据库----MySQL】解决java.sql.SQLException: Zero date value prohibited

这种错误是由于数据库的字段为datetime,但是数据的值为0000-00-00 00:00:00,这时zeroDateTimeBehavior默认为exception,会抛出一个SQLException异常 解决方式: 在数据库连接的URL后面加上&zeroDateTimeBehavior=convertToNull jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&all.

Sunny 2909

数据库日期字段值为:0000-00-00 00:00:00,报java.sql.SQLException: Zero date value prohibited

问题如题目所示,会报如下异常。 com.mysql.cj.exceptions.DataReadException: Zero date value prohibited at com.mysql.cj.result.SqlTimestampValueFactory.localCreateFromTimestamp(SqlTimestampValueFactory.java:99) ~[mysql-connector-java-8.0.16.jar!/:8.0.16] at com.mysql.cj

qq_38253995的博客 722

MyBatis:SQLException(Zero date value prohibited)解决方案

SQLException zeroDateTimeBehavior

王小二(海阔天空) 6048

报错:java.sql.SQLException: Zero date value prohibited

报错:java.sql.SQLException: Zero date value prohibited 的一个解决方案

song的博客 1188
上一篇: CentOS7安装最新版的MySQL(5.7)以及密码设置强度的问题
下一篇: MyBatis笔记1:从JDBC到MyBatis
sunforraining
博客等级 码龄9年 13粉丝 43原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值