MySQL字段设置默认数值,但是插入后不是设置的数值而是0

Posted 摸鱼职业哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL字段设置默认数值,但是插入后不是设置的数值而是0相关的知识,希望对你有一定的参考价值。

        今天工作任务是一个需要二次开发的项目,好吧,到底多少次了我也不知道,直接拉下来开干就完事了!需求是个简单的对一个插入数据的功能进行二次开发,按照需求修改部分地方即可。

        但是遇到个很基础的问题,也失露出我JAVA基础拉稀的事实(细小字体大家应该看不见)

    

但是我发现我改完后测试就出现了问题!

我插入的数据!统计用的c_report_count 字段是 0  !

而用线上版本的插入却是 1 !

我第一时间想到数据库的表字段设置问题,线上版本插入保存的1 ,而我本地插入保存的是0 ,这显然不会是表问题,但是我还是打开检查了一遍!

 没有问题!设置的默认:1 

我当时脑子一片空白,但是想了想后,一定是插入的时候在哪set了0吧!

这里就不放代码了,因为根本没有set这个字段。。。

那为什么我这插入就是 0 呢?

一番无脑看 新闻摸鱼 蹲大厕 打水 泡茶 拿零食后

打开实体类检查,终于找到了这个问题的源头!

啊!~  是刻在DNA里的int默认值是 0 !

 

将类型改成Integer 后重启项目再次测试插入后c_report_count 就是 1 了!

 

没错!int的默认值是0 ,如果这个字段没有set值进去那么默认就是0 ,所以插入到数据库里的数据的字段是 0 ,而Integer 的默认值是null 也就是说,插入到数据库后mysql发现你的这个字段没有值,那么就会输入上你设置的默认值!(前提是你要给该字段设置默认值

        但是我感觉这里问题主要还是拉取下来的版本问题,可能线上发布的版本还握在某位同事手里。。。

 

以上是关于MySQL字段设置默认数值,但是插入后不是设置的数值而是0的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL建表1064错误?

MySql 表列中未设置默认值

字段的约束条件

mysql default设置了默认值但插入依然为null

MySQL字段默认值设置详解

php中的mysql数据库的,字段默认值该怎么输入,啥格式?