Data truncation: Incorrect datetime value: '' for column 'ordertime' at row 1

2024-03-01 05:58

本文主要是介绍Data truncation: Incorrect datetime value: '' for column 'ordertime' at row 1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 背景
  • 调试
  • 版本查看
    • 数据库版本
    • 连接器version
    • jar包替换
  • 知识点

* 背景


       最直观遇到的问题是这样的:1. could not insert: [cn.itcast.shop.order.vo.Order]; SQL [insert into orders (total, ordertime, state, name, addr, phone, uid) values (?, ?, ?, ?, ?, ?, ?)]; nested exception is org.hibernate.exception.DataException: could not insert: [cn.itcast.shop.order.vo.Order]
   当时也做了问题记录,如下:

这里写图片描述


* 调试


       遇到问题,首先要做的就是调试,看看是哪里出现了问题,这样更容易下手解决。不过问题调试后我发现,最后出现意外的是持久层,使用hibernate的时候,这时感觉到不是code的问题了,于是继续追踪,看到了抛出的t提示信息是这样的:Data truncation: Incorrect datetime value: ” for column ‘ordertime’ at row 1。我想到,当自己执行插入方法时,传过一个date类型的属性。难道是这里出现了问题吗?
   于是,我上网查询了一下,发现mysql-connector-java的jar包和数据库是要匹配的,他们的大致匹配规则是这样的:

  1. Connector/J 5.1 支持Mysql 4.1、Mysql 5.0、Mysql 5.1、Mysql 6.0 alpha这些版本。
  2. Connector/J 5.0 支持MySQL 4.1、MySQL 5.0 servers、distributed transaction (XA)。
  3. Connector/J 3.1 支持MySQL 4.1、MySQL 5.0 servers、MySQL 5.0 except distributed transaction (XA) support。
  4. Connector/J 3.0 支持MySQL 3.x or MySQL 4.1

* 版本查看


** 数据库版本


       因为自己使用的mysql数据库时装在虚拟机中的docker容器中的,那么docker容器中的mysql如何查看呢?看到的小伙伴有福利了~

  • 查看运行的容器
    通过命令:docker ps 查看正在运行的容器

    这里写图片描述

  • 进入容器

docker exec -it shop bash
mysql -uroot -p

    输入mysql数据库的用户名和密码,即可进入mysql,并且我们也可以看到myslq的版本了,为5.7.18,mysql的版本从5.5以上,日期的格式就发生了变化。

这里写图片描述


** 连接器version


       发现自己使用的jar包时5.0.4版本的,于是自己下了5.1.45version的jar包。这是链接
需要的小伙伴,请自行进入。


** jar包替换


       我们找到自己之前用的jar包,将它替换成我们新的jar包就可以了。不过到这里,小编还是遇到问题,仍然不行,错误依旧。这里要温馨提示大家,我们不仅要将项目下面的lib文件夹中的war包替换一下,同时我们需要将out文件下的jar包替换成新的jar包,不然tomcat依然会发布旧的war包。


* “知识点”


       项目中的Date类型,在mysql中应该配置的类型是datetime类型的。不过为啥低版本的连接器就不可以了呢?这其中又有什么变化呢?期待我们更多的发现~

这篇关于Data truncation: Incorrect datetime value: '' for column 'ordertime' at row 1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/761419

相关文章

Mysql DATETIME 毫秒坑的解决

《MysqlDATETIME毫秒坑的解决》本文主要介绍了MysqlDATETIME毫秒坑的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 今天写代码突发一个诡异的 bug,代码逻辑大概如下。1. 新增退款单记录boolean save = s

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

CentOS下mysql数据库data目录迁移

https://my.oschina.net/u/873762/blog/180388        公司新上线一个资讯网站,独立主机,raid5,lamp架构。由于资讯网是面向小行业,初步估计一两年内访问量压力不大,故,在做服务器系统搭建的时候,只是简单分出一个独立的data区作为数据库和网站程序的专区,其他按照linux的默认分区。apache,mysql,php均使用yum安装(也尝试

使用Spring Boot集成Spring Data JPA和单例模式构建库存管理系统

引言 在企业级应用开发中,数据库操作是非常重要的一环。Spring Data JPA提供了一种简化的方式来进行数据库交互,它使得开发者无需编写复杂的JPA代码就可以完成常见的CRUD操作。此外,设计模式如单例模式可以帮助我们更好地管理和控制对象的创建过程,从而提高系统的性能和可维护性。本文将展示如何结合Spring Boot、Spring Data JPA以及单例模式来构建一个基本的库存管理系统

python内置模块datetime.time类详细介绍

​​​​​​​Python的datetime模块是一个强大的日期和时间处理库,它提供了多个类来处理日期和时间。主要包括几个功能类datetime.date、datetime.time、datetime.datetime、datetime.timedelta,datetime.timezone等。 ----------动动小手,非常感谢各位的点赞收藏和关注。----------- 使用datet

15 组件的切换和对组件的data的使用

划重点 a 标签的使用事件修饰符组件的定义组件的切换:登录 / 注册 泡椒鱼头 :微辣 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-

12C 新特性,MOVE DATAFILE 在线移动 包括system, 附带改名 NID ,cdb_data_files视图坏了

ALTER DATABASE MOVE DATAFILE  可以改名 可以move file,全部一个命令。 resue 可以重用,keep好像不生效!!! system照移动不误-------- SQL> select file_name, status, online_status from dba_data_files where tablespace_name='SYSTEM'

INDEX+SMALL+IF+ROW函数组合使用解…

很多人在Excel中用函数公式做查询的时候,都必然会遇到的一个大问题,那就是一对多的查找/查询公式应该怎么写?大多数人都是从VLOOKUP、INDEX+MATCH中入门的,纵然你把全部的多条件查找方法都学会了而且运用娴熟,如VLOOKUP和&、SUMPRODUCT、LOOKUP(1,0/....,但仍然只能对这种一对多的查询望洋兴叹。   这里讲的INDEX+SMALL+IF+ROW的函数组合,

SIGMOD-24概览Part7: Industry Session (Graph Data Management)

👇BG3: A Cost Effective and I/O Efficient Graph Database in ByteDance 🏛机构:字节 ➡️领域: Information systems → Data management systemsStorage management 📚摘要:介绍了字节新提出的ByteGraph 3.0(BG3)模型,用来处理大规模图结构数据 背景

java的Timestamp时间插入mysql的datetime字段是0000-00-00 00:00:00

Mysql 与 java 的时间类型             MySql的时间类型有              Java 中与之对应的时间类型                  date                                               java.sql.Date               Datetime