执行 DB::insertGetId() 方法,返回了 id,但是数据库却没有记录?

遇到一个奇怪的问题

$res = DB::table('user')->insertGetId($attributes);

这时 $res 返回值是自增 id ,但是数据库中却没有记录,并且下一次再执行的时候 $res 还会 +1。

我尝试了用事务提交,但是没有效果。

但是在 tinker 中是可以添加的,如果上面的 $res 返回 2 在 tinker 中更新数据设定 id 也为 2,是可以添加成功的,现在怀疑数据库有回滚,不知道对不对,请问我应该从哪方面来排查?

感谢。

悲观者永远正确,乐观者永远前行。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

记一下 insert 语句失效的原因,大概有3点:

  1. 数据开启了事务,但是没有提交
  2. 发生错误,没有用 try catch 捕捉,导致数据回滚
  3. SQL语句已经拼接好,但是并没有执行
3年前 评论
讨论数量: 3

问题解决了,跟 insertGetId 没关系,是这条 DB 语句之后的一个语句发生错误了,没有用 try catch 捕捉,导致数据回滚了。

3年前 评论

记一下 insert 语句失效的原因,大概有3点:

  1. 数据开启了事务,但是没有提交
  2. 发生错误,没有用 try catch 捕捉,导致数据回滚
  3. SQL语句已经拼接好,但是并没有执行
3年前 评论

原来回滚之后 最大自增 id 不会回滚的

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!