Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry ‘yuan‘ for key ‘idx_userna

发送请求后,后端报错

这个错误是 Duplicate entry(重复值)

意思是在底层你的数据库添加了一个字段不可重复的设置,当你第一次去测试该请求时,由于并没有对该异常进行处理,所以会爆出此错误。

修正:查看数据库,看看是不是某个字段值重复了,修改一下字段,重新请求即可;

后续要对次异常进行异常的处理机制,在请求页面告知用户,字段重复

1.异常

 查看数据库

 查看请求参数

 两者一样,因为底层数据库的username字段设置了unique,所以需要更改请求参数的username

更改后不报错

2.进行异常处理机制

在全局异常处理器中添加处理方法

 /**
     * 捕获SQL异常
     * @param ex
     * @return
     */
    @ExceptionHandler
    public Result exceptionHandler(SQLIntegrityConstraintViolationException ex){
        log.error("异常信息:{}", ex.getMessage());
        String message = ex.getMessage();
        if(message.contains("Duplicate entry")){
            //字段值重复异常
            String[] split = message.split(" ");
            String msg=split[2] + MessageConstant.ALREADT_EXIST;
            return Result.error(msg);
        }
        return Result.error(MessageConstant.UNKNOWN_ERROR);
    }

添加后重新跑代码,发请求

 在前端就会给出报错信息了

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值