You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 8更新记录时报错但数据实际更新成功是什么原因?

可能的原因整理
  • 代码重复执行了两次更新操作
    第一次更新时传入的universityname字段为合法非空值,执行成功完成了数据写入;第二次更新时该字段未传入有效值变为null,触发非空约束报错。你查询到的数据库结果是第一次更新成功写入的数据,第二次报错不会回滚第一次已经完成的非事务操作。
  • 存在重复提交的请求
    客户端/前端同时触发了两次相同的更新请求,第一次请求参数完整执行成功,第二次请求因为参数丢失(比如表单防抖逻辑失效、用户快速点击提交两次)导致universityname为空触发报错,数据库中保留的是第一次请求的更新结果。
  • 事务处理逻辑错误
    你将更新操作和其他数据库操作放在同一个事务中,更新操作本身执行成功,后续的其他操作触发了相同的universityname非空约束报错,但你的异常捕获逻辑错误地提交了事务而非回滚,导致之前的更新结果被持久化到数据库,同时抛出了后续步骤的报错信息。
  • 字段赋值逻辑存在条件分支漏洞
    代码中仅在满足特定条件时才给universityname字段赋值,未对不满足条件的场景做兼容处理;同时你在代码中拆分了两次写入操作,第一次先写入了其他非空字段,第二次写入universityname时为空触发报错,你看到的数据库结果是第一次写入的内容。

对应的报错信息:
Illuminate\Database\QueryException
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'universityname' cannot be null
对应执行的预编译SQL语句:

update `exam_applications` 
set `universityname` = ?, `graduationyear` = ?, `mbbscert` = ?, `mdcncert` = ?, `certification` = ?, `attestation` = ? 
where `applicationid` = 202108181856139

内容的提问来源于stack exchange,提问作者clementcrownrise

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 10:39:03