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

如题

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

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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理