thinkphp6命令行模式+mysql提示General error: 2006 MySQL server has gone away

  • 155
  • 阅读模式

导致问题发生的最终原因是由于自己疏忽!框架使用了两个数据库在切换的数据库未配置“断线重连”!只配置了第一个,这也是最后通过连接mysql数据库kill掉进程才发现第一个可以断线重连,第二个则不可以!

发现问题

thinkphp6使用redis消息队列,连接数据库进行数据库操作.发现第二天数据库报错:


SQLSTATE[HY000]: General error: 2006 MySQL server has gone away

database.php 涉及到数据库开启断线重连


// 数据库连接配置信息
    'connections'     => [
        'mysql' => [
            // 是否需要断线重连
            'break_reconnect'   => true
        ],
        // 更多的数据库配置信息
        'twoSql'    =>    [
          // 是否需要断线重连
            'break_reconnect'   => true,
        ],

mysql查看连接状态 模拟断线场景


//进入数据库
mysql -u root -p
# 输入密码

//显示mysql连接状态
mysql> show processlist;
+--------+------------------+-----------------+------------------+---------+------+-------+------------------+
| Id     | User             | Host            | db               | Command | Time | State | Info             |
+--------+------------------+-----------------+------------------+---------+------+-------+------------------+
| 109476 | root             | localhost        | NULL           | Query   |    0 | init  | show processlist |
| 109528 | 数据库名称  | localhost:56670 | 表名          | Sleep   |    7 |       | NULL             |
+--------+------------------+-----------------+------------------+---------+------+-------+------------------+

//杀掉连接
kill id号

推荐mysql类

常驻内存的程序在使用mysql时经常会遇到mysql gone away的错误,这个是由于程序与mysql的连接长时间没有通讯,连接被mysql服务端踢掉导致。本数据库类可以解决这个问题,当发生mysql gone away错误时,会自动重试一次。
https://www.workerman.net/doc/workerman/components/workerman-mysql.html

历史上的今天
4月
7
weinxin
我的微信
这是我的微信扫一扫
开拓者博主
  • 本文由 发表于 2022年4月7日13:13:17
  • 转载请务必保留本文链接:https://www.150643.com/570.html
匿名

发表评论

匿名网友 填写信息