Laravel5多库使用事务失效问题解决

最近在laravel项目中使用`DB::transaction()`事务操作时,出现接口抛出异常,信息如下

Laravel5多库使用事务失效问题解决

最近在laravel项目中使用DB::transaction()事务操作时,出现接口抛出异常,信息如下:

errors: "Sorry, something went wrong."
exception: "InvalidArgumentException"
message: "Database [mysql] not configured."

mysql未配置,其实项目中删除了mysql的默认配置,使用了自定义。

解决上面的问题,但是事务还是执行失效,查了下laravel5相关文档了解到.

使用多个数据库连接的时候,可以使用DB门面的connection方法访问每个连接。传递给connection方法的连接名对应配置文件config/database.php中相应的连接:

$users = DB::connection('foo')->select(...);

同理,DB::transaction()使用的是默认库的事务操作。所以要指定哪个数据库的事务.

原代码:

use Illuminate\Support\Facades\DB; 
DB::beginTransaction(); 
try {
    // do
    DB::commit(); 
    return [
        'status' => 1,
        'msg' => '更新成功'
    ];
} catch (Exception $e) {
    print_r($e->getMessage());
    DB::rollback();  //回滚
}

改版:

DB::connection('mysql_per')->beginTransaction(); 
try {
    // do
    DB::connection('mysql_per')->commit(); 
    return [
        'status' => 1,
        'msg' => '更新成功'
    ];
} catch (Exception $e) {
    print_r($e->getMessage());
    DB::connection('mysql_per')->rollback();  //回滚
}
#其中mysql_per是指定的数据库链接
上一篇:Git提交历史查询功能介绍以及使用 下一篇:Nginx解决访问图片显示404,403问题

评论

评论(0)

暂无评论