主键字段报错doesn't have a default value (mybatis)

Posted zzzqi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了主键字段报错doesn't have a default value (mybatis)相关的知识,希望对你有一定的参考价值。

主键字段报错doesn\'t have a default value (mybatis)

最近导师交给我一个项目,今天调试新功能的时候发现在执行数据库插入操作的时候,主键报错

补充说明一下,workorder_number做主键,char类型。

在控制台查看代码执行到插入语句的时候其对应的sql语句

发现没有插入workorder_number这个字段,其他的字段全都插入了。到这里可以初步判断应该是在插入的时候主键这个字段没有被选中插入。确定了发现,接下来一步步排查,在检查数据库中表的映射没有出错、表的实体类没有问题、字段和变量名没有写错之后,最后检查mybatis的配置的时候,我发现了问题所在。

原来是主键已经设置好了数据库ID自增,那么在向表中插入新记录的时候就不需要我们自己填写主键的值,那么也就很理所应当的我们的主键的字段就不会出现在上文中的sql语句里面。所有问题的解决方案就是:在表中新增个“id”字段,做主键,int类型,自增。那么问题就解决了

原来的workorder_number字段也出现在了sql语句里面,插入成功。

在此记录下我犯的这个错误,在接手老项目的时候,务必搞清楚其相关的配置方式,避免产生不必要的错误。

以上是关于主键字段报错doesn't have a default value (mybatis)的主要内容,如果未能解决你的问题,请参考以下文章

mysql创建用户报错ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value

MySql Field '*' doesn't have a default value问题

Field 'id' doesn't have a default value

mysql 插入not null 没有default报错(doesn't have a default value)

Field 'id' doesn't have a default value错误解决方法

Field "details" doesn't have a default value