Cause: java.sql.SQLIntegrityConstraintViolationException: Column ‘xxx‘ cannot be null

本文记录了一次数据库插入操作中遇到的错误,错误源于业务ID(businessId)作为主键但未设置为自动递增。通过分析SQL语句和Mapper配置文件,定位到问题所在。最终,通过将businessId设置为自动递增,成功解决了插入数据时的异常,确保了数据的正常插入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、报错信息

2、定位错误的范围

### SQL: insert into business             (businessId,password,salt,businessName,businessAddress,businessExplain,starPrice,deliveryPrice)             values (?,?,?,?,?,?,?,?)

3、从上述报错内容已知错误存在于SQL的insert into操作里,然后跳转到BuseineeMapper.xml里

4、定位到BusinessMapper.xml里的id为add的部分

    <insert id="add" parameterType="Business" useGeneratedKeys="true">
        <!-- 使用数据库的自增列管理businessId值,并保存到Business类的businessId属性中 -->
        <selectKey keyColumn="businessId" keyProperty="businessId" resultType="int">
            select last_insert_id() as businessId
        </selectKey>
        insert into business
            (businessId,password,salt,businessName,businessAddress,businessExplain,starPrice,deliveryPrice)
            values (#{businessId},#{password},#{salt},#{businessName},#{businessAddress},#{businessExplain},#{starPrice},#{deliveryPrice})
    </insert>

5、发现sql语句和xml标签没写错,排除问题存在于BusinessMapper.xml

6、最后发现businessId是必填字段而且是主键,但没有给businessId勾选自动递增,所以插入数据时因为businessId没值且不自增而导致异常

7、勾选上自动递增并保存,运行成功

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值