关于php:Laravel框架Mysql连接多库时事物处理需要指定库

8次阅读

共计 772 个字符,预计需要花费 2 分钟才能阅读完成。

如题

其实这不是 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();}

没理论利用,有机会在工作中测验一下。

正文完
 0