Laravel的事务处理求解.
public function store(Request $request, $id)
{
$externalAccount = ExternalAccounts::find($id);
DB::beginTransaction();
try {
$externalAccount->fund_number = 999;
$externalAccount->capital_balance = 'kjhkjhkj';
$externalAccount->save();
DB::commit();
} catch (Exception $e){
DB::rollback();
throw $e;
}
}
第一次用Laravel。。
capital_balance字段为int类型,我故意传进去字符串类型,这样写入肯定会出错的。
但是上面的fund_number居然写入成功了,没有回滚= =。。
求老司机解答。。
mysql引擎没错,是InnoDB。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我估计是mysql的坑,你拿生成好的sql直接到mysql里面去执行一下看看
mysql 严格模式和非严格模式的区别,你新写入的数据capital_number字段为0 或者空?
Laravel框架已经重写了各种exception异常处理类
事务提交的异常处理类为IlluminateDatabaseQueryException,所以用exception类是捕获不到事务提交错误的异常的
这样才能捕获到