如题
其实这不是Laravel框架的原因,网上有查到java程序,使用Mysql多库进行事物处理,也需要指定库。
Laravel框架项目中使用了多个库,将业务分库储存,Model中指定了连接的库。
protected $connection = 'mysql_bms';
代码中使用事务处理
DB::beginTransaction();
try{
....
DB::commit();
}
catch (Exception $e){
DB::rollback();
}
今天测定测试发现事务处理并不生效。
研究了好长时间才发现,原来是连接多库的原因,事务处理需要这样写:
DB::connection('mysql_bms')->beginTransaction();
try{
....
DB::connection('mysql_bms')->commit();
}
catch (Exception $e){
DB::connection('mysql_bms')->rollback();
}
程序中只使用该业务单个库的表,所以指定连接就可以了,那么程序中混合使用多库的表呢?
网上查到java程序的解决方案,应该也适合PHP,那就是程序使用的表,连接多库,每个都要进行事务处理
DB::connection('库1')->beginTransaction();
DB::connection('库2')->beginTransaction();
try{
....
DB::connection('库1')->commit();
DB::connection('库2')->commit();
}
catch (Exception $e){
DB::connection('库1')->rollback();
DB::connection('库2')->rollback();
}
没实际应用,有机会在工作中检验一下。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。