
最近在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是指定的数据库链接评论
暂无评论
评论(0)