diff --git a/Command.php b/Command.php index 89e838b..94de022 100644 --- a/Command.php +++ b/Command.php @@ -157,7 +157,7 @@ class Command extends Component return $result == 0 ? true : $result; } catch (\PDOException|\Throwable $throwable) { if (str_contains($throwable->getMessage(), 'MySQL server has gone away')) { - Context::remove('master:client'); + $this->db->restore(true); unset($pdo); return $this->_execute(); @@ -187,6 +187,8 @@ class Command extends Component return $statement; } catch (\PDOException|\Throwable $throwable) { if (str_contains($throwable->getMessage(), 'MySQL server has gone away')) { + $this->db->restore(false); + unset($pdo); return $this->queryPrev($this->db->getSlaveClient()); } diff --git a/Connection.php b/Connection.php index 594928b..db2c80f 100644 --- a/Connection.php +++ b/Connection.php @@ -253,6 +253,17 @@ class Connection extends Component } + public function restore($isMaster) + { + if ($isMaster) { + Context::remove($this->cds . 'master'); + } else { + $slave = ($this->slaveConfig['cds'] ?? $this->cds) . 'slave'; + Context::remove($slave); + } + } + + /** * * 回收链接