我使用的MyISAM MySQL和我想在这里使用的交易是我的代码:交易与雄辩Laravel 5
DB::transaction(function() {
$project = Project::find($id);
$project->users()->detach();
$project->delete();
});
此代码执行succesfuly,但我不知道该事务的工作......我怎么能测试它?
我使用的MyISAM MySQL和我想在这里使用的交易是我的代码:交易与雄辩Laravel 5
DB::transaction(function() {
$project = Project::find($id);
$project->users()->detach();
$project->delete();
});
此代码执行succesfuly,但我不知道该事务的工作......我怎么能测试它?
实际上只有两种方法,既不是特别好,因为DB:transaction不报告错误。
如果事务失败,则将try/catch块置于闭包内并在catch块中设置一个外部变量。
做一个手动事务中,使用DB ::的BeginTransaction和回滚/提交,再次用一个异常处理程序,按照这个例子:
DB::beginTransaction(); try { $project = Project::find($id); $project->users()->detach(); $project->delete(); DB::commit(); $success = true; } catch (\Exception $e) { $success = false; DB::rollback(); } if ($success) { // the transaction worked ... }
的问题是很老,但在我意见是没有办法实现与MyISAM存储引擎的交易。
最新的MySQL服务器版本是5.7,相应的参考指南描述了MyISAM存储引擎不支持事务。
https://dev.mysql.com/doc/refman/5.7/en/myisam-storage-engine.html
如果我正确认识,开始,提交和回滚语句没有错误接受,但该行为与预期不同。
我不关心错误报告我只需要确定2个查询总是一起运行......你能告诉我手动事务的例子吗? –
我编辑了我的答案以包含一个示例。 – delatbabel