Transactions 与能言善辩的Laravel 5的交易
我正在使用MyISAM for MySQL,我想使用transaction这是我的代码:Transactions 与能言善辩的Laravel 5的交易,transactions,laravel-5,eloquent,Transactions,Laravel 5,Eloquent,我正在使用MyISAM for MySQL,我想使用transaction这是我的代码: DB::事务(函数(){ $project=project::find($id); $project->users()->detach(); $project->delete(); }); 此代码执行成功,但我不确定事务是否正常。。。如何测试它?实际上只有两种方法可以做到这一点,两种方法都不是特别好,因为DB::transaction不会报告错误 在闭包内放置try/catch块,如果事务失败,则在cat
DB::事务(函数(){
$project=project::find($id);
$project->users()->detach();
$project->delete();
});
此代码执行成功,但我不确定事务是否正常。。。如何测试它?实际上只有两种方法可以做到这一点,两种方法都不是特别好,因为
DB::transaction
不会报告错误
DB::beginTransaction
和rollback/commit执行手动事务,如下例所示:
DB::beginTransaction();
试一试{
$project=project::find($id);
$project->users()->detach();
$project->delete();
DB::commit();
$success=true;
}捕获(\异常$e){
$success=false;
DB::rollBack();
}
如果($成功){
//交易继续进行。。。
}
这个问题已经很老了,但在我看来,使用MyISAM存储引擎无法实现事务
最新的MySQL服务器版本是5.7,相应的参考指南描述了MyISAM存储引擎不支持事务
如果我知道的正确,begin、commit和rollback语句将被接受,不会出现错误,但行为与预期不同。我不关心错误报告,我只需要确保两个查询始终同时运行。。。您能给我演示一下手动事务的例子吗?对于仍然访问此问题的人,请使用DB::rollBack();应使用capital B MyISAM引擎不支持交易。每个查询都是原子的。如果需要事务,则表必须是InnoDB或NDB,或其他支持事务的引擎。您可能在搜索Laravel mysql事务时发现了这个问题,但问题的原始假设只能回答为“不可能,除非您将表转换为InnoDB”