学习Mybatis 的时候遇到 Data truncation: Incorrect datetime value: '0' for column
找了一圈一直以为是插入时间的格式跟数据库的格式不一致想了各种办法解决时间格式的问题都解决不了。
通过log4j日志 仔细检查发现其实通过java.util获得的 new(Date)传入的时间格式就是数据库datetime所需要的时间戳(timetamp)格式 ,核心问题还是传入数据库的值不对并且始终为零。
通过博客 https://blog.csdn.net/mcloser/article/details/89679451 内容及底下的评论发现根本问题就是SQL格式写错了:
<insert id="addBlog" parameterType="com.timmy.pojo.Blog" > insert into mybatis.blog (id, title, author, create_time, views) VALUES (id=#{id},title=#{title},author=#{author},create_time=#{create_time},views=#{views}) </insert>
正确insert 语句格式:
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
所以正确代码中values内不应该加 = 号,加了等号会成为逻辑判断,导致插入的value为0 ,值为零其他类型如varchar和int可能不会报错,但是datetime会报这个错误,
看到有一些人有问题说
插入数据成功了没报错但是值都是0,应该还是这个sql写错的问题。
正确代码如下:
打好基础,多写sql,方是终极解决之道!