赞
踩
* 背景 |
最直观遇到的问题是这样的: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包和数据库是要匹配的,他们的大致匹配规则是这样的:
* 版本查看 |
** 数据库版本 |
因为自己使用的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类型的。不过为啥低版本的连接器就不可以了呢?这其中又有什么变化呢?期待我们更多的发现~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。