laravel7+swoole insert数据的一个奇葩问题
1. 运行环境
linux
1). 当前使用的 Laravel 版本?
Laravel 7
2). 当前使用的 php 版本?
PHP 版本:7.4
2. 问题描述?
这里有一个很奇葩的问题,使用swoole情况下,如果env的APP_DEBUG=true的情况下,凡是插入数据库的数据,没有实际插入到数据库,但是那些select的语句是正常的看到新的数据,如果重启swoole,那边这些数据就会被清空。
有没有大佬能解释一下
$CategoryModel = new Category();
$insert['name'] = $post['name'];
$insert['status'] = $post['status'];
$insert['sort'] = $post['sort']??0;
$insert['addtime'] = time();
$id = $CategoryModel->insertGetId($insert);
$this->log($id,"添加类型:".$post['name']);
return ['error'=>0,'msg'=>'添加成功'];
你这个属于很常见的长连接问题 1、该进场,请求了一个接口,开启了事务,但是报错了,导致事务没有回滚或提交 2、后续请求,也是该进场处理,会导致,进程内上一个事务没结束,开启了下一个,也就是事务嵌套,提交成功,也就是嵌套事务其中一个提交了,也算入库了,但是你用软件是看不到的,因为外层还有一个事务没提交 3、下次请求,继续该进程,也就是你还在这个事务中,也就是你能查到当前事务的数据(也就是上一次请求的数据) 4、这就是很简单的长连接事务问题