当前位置:   article > 正文

Data truncation: Incorrect datetime value: '' for column 'ordertime' at row 1_- data truncation: incorrect datetime value: '' fo

- data truncation: incorrect datetime value: '' for column 'ordertime' at ro

* 背景


       最直观遇到的问题是这样的: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
  • 1
  • 2

    输入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类型的。不过为啥低版本的连接器就不可以了呢?这其中又有什么变化呢?期待我们更多的发现~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/607236
推荐阅读
相关标签
  

闽ICP备14008679号