报错内容:
Syntax error or access violation: 1305 SAVEPOINT trans2 does not exist
部分代码. 如果大神需要提供什么可以继续提供.帮忙解答
$model_VxAccounts = (new VxAccounts())->setSuffix('_' . $page);
$model_VxAccounts->startTrans();
$vx_accounts = $model_VxAccounts->lock(true)->where('account',$zsWxId)->find();
调用的代码
$retData = $this->FailWriteBack($vx_accounts);
if ($retData['RetCode'] === 0)
{
$model_VxAccounts->commit();
Log::record('日志信息>> 正式 FailWriteBack 登陆失败,重写后面成功~! 时间:' . date("Y-m-d H:i:s", time()) . '--线路:' . $line . '--账号ID:' . $idActual . '--wxId:' . $wx_id . '--loginData:' . print_r($LoginData,true));
return json_encode(['RetCode' => -13, 'id' => $id . '--' . $idActual, 'wxId' => $wx_id, 'password' => $password, 'deviceId' => $device_id, 'Msg' => '登陆失败,重写后面成功~!', 'data' => $LoginData],JSON_UNESCAPED_UNICODE);
} else {
$model_VxAccounts->rollback(); //这里报错的
Log::record('日志信息>> 正式 FailWriteBack 登陆失败,重写后面失败~! 时间:' . date("Y-m-d H:i:s", time()) . '--线路:' . $line . '--账号ID:' . $idActual . '--wxId:' . $wx_id . '--loginData:' . print_r($LoginData,true));
return json_encode(['RetCode' => -14, 'id' => $id . '--' . $idActual, 'wxId' => $wx_id, 'password' => $password, 'deviceId' => $device_id, 'Msg' => '登陆失败,重写后面失败~!', 'data' => $retData],JSON_UNESCAPED_UNICODE);
}
然后根据情况调用 下面这个方法
public function FailWriteBack($vx_accounts)
{
try {
$retDelData = $vx_accounts->delete();
if ($retDelData)
{
$retData = json_decode($vx_accounts,true);
$retData['id'] = null;
$retData['created_at'] = date("Y-m-d H:i:s",time());
$ret = $vx_accounts->save($retData);
if ($ret)
{
return ['RetCode' => 0,'Msg' => 'FailWriteBack,重新写入成功~!', 'wxid' => $vx_accounts['wx_id'], 'data' => ''];
} else {
return ['RetCode' => -1,'Msg' => 'FailWriteBack失败,重新写入失败~!', 'wxid' => $vx_accounts['wx_id'], 'data' => ''];
}
} else {
return ['RetCode' => -4,'Msg' => 'FailWriteBack失败,删除通道账号失败~!', 'data' => ''];
}
} catch (\Exception $e) {
Log::record('日志信息>> 正式 sql语句 11 --wxId:' . $vx_accounts['wx_id'] . '--sql:' . $vx_accounts->getlastsql() . '--error:' . $e->getMessage());
return ['RetCode' => -3,'Msg' => 'FailWriteBack错误~!', 'data' => $vx_accounts['wx_id'], 'error' => $e->getMessage()];
}
}
然后就跑到catch里面了
里面的日志内容
日志信息>> 正式 sql语句 11 --wxId:002348121617561--sql:INSERT INTO `fa_vx_accounts_9` SET `id` = NULL , `created_at` = '2021-04-06 00:02:58' , `account` = NULL , `wx_id` = 'xxxxxxxxxxxxxxx' , `password` = 'xxxxxxxxxxxxxxx' , `device_id` = 'xxxxxxxxxxxxxxx' , `status` = NULL , `platform_ids` = NULL , `remark` = NULL , `vx_remark_id` = 1 , `block` = NULL , `head_img` = 0--error:SQLSTATE[42000]: Syntax error or access violation: 1305 SAVEPOINT trans2 does not exist
详情说明:
我是在几十并发的情况下.有时候会报这个错误. 有时候不会.
最佳答案