yii2 console MySQL server has gone away经过我的不屑努力和研究终于得到解决方案

修改配置文件common/config/main.php

在components中添加'commandClass'=>"\common\lib\DbCommand",添加检测连接配置return [

'components' => [

'db' => [

'class' => 'yii\db\Connection',

'dsn' => 'mysql:host=127.0.0.1;dbname=test',

'username' => 'root',

'password' => 'root',

'charset' => 'utf8',

'tablePrefix' => '',

'commandClass'=>"\common\lib\DbCommand",#添加检测连接配置

],

]

创建common\lib\DbCommand.php<?php

/**

* Name: Db连接检测

* Author: JiaMeng <666@majiameng.com>

* Date: 2018/7/6 11:59

* Description: IndexController.php.

*/

namespace common\lib;

class DbCommand extends \yii\db\Command{

public function execute()

{

try {

return parent::execute();

} catch (\yii\db\Exception $e) {

if ($e->errorInfo[1] == 2006 || $e->errorInfo[1] == 2013) {//2006 mysql has gone away

$this->db->close();

$this->db->open();

$this->pdoStatement = null ;

return parent::execute();

}else{

throw $e;

}

}

}

protected function queryInternal($method, $fetchMode = null){

try {

return parent::queryInternal($method, $fetchMode);

} catch (\yii\db\Exception $e) {

if ($e->errorInfo[1] == 2006 || $e->errorInfo[1] == 2013) {

$this->db->close();

$this->db->open();

$this->pdoStatement = null ;

return parent::queryInternal($method, $fetchMode);

}else{

throw $e;

}

}

}

}

测试<?php

namespace console\controllers;

use yii\console\Controller;

use Yii;

class IndexController extends Controller

{

public function actionTest(){

ini_set('default_socket_timeout', -1);

for ($i=0;$i<=100;$i++){

echo "\r\n";

sleep(1);

echo date('H;i:s').":".$i;

try{

$a = \yii::$app->tinymeng->createCommand('SELECT id,username FROM user WHERE id=1');

$result = $a->queryOne();

echo json_encode($result);

}catch (\Exception $exception){

echo "close !";

}

}

}

}

执行中重启服务器数据库17;36:07:0{"id":"1","username":"admin"}

17;36:08:1{"id":"1","username":"admin"}

17;36:09:2{"id":"1","username":"admin"}

17;36:10:3{"id":"1","username":"admin"}

17;36:11:4{"id":"1","username":"admin"}

17;36:12:5{"id":"1","username":"admin"}

17;36:13:6{"id":"1","username":"admin"}

17;36:14:7{"id":"1","username":"admin"}

17;36:15:8{"id":"1","username":"admin"}

17;36:17:9{"id":"1","username":"admin"}

17;36:18:10{"id":"1","username":"admin"}

17;36:19:11{"id":"1","username":"admin"}

17;36:20:12{"id":"1","username":"admin"}

17;36:21:13{"id":"1","username":"admin"}

17;36:22:14{"id":"1","username":"admin"}

17;36:23:15close !

17;36:24:16close !

17;36:25:17close !

17;36:27:18{"id":"1","username":"admin"}

17;36:29:19{"id":"1","username":"admin"}

17;36:30:20{"id":"1","username":"admin"}

17;36:31:21{"id":"1","username":"admin"}

yii2 mysql gone away,yii2 console MySQL server相关推荐

  1. mysql root远程访问权限_mysql8.0 Server在Windows平台中的安装、初始化和远程访问设置...

    mysql8.0 server安装 1.下载mysql 8.0 可以到mysql官网下载 https://dev.mysql.com/downloads/mysql 或者如下地址 mysql-8.0. ...

  2. 怎么把mysql转换mssql_MySQL如何转SQL server

    本文咱讨论的重点是如何将MySql数据导入到Sql Server数据库中,所以就需要机器上同时安装了MySql和Sql Server两种数据库. 要点:mysql 和 mysql odbc 都是64位 ...

  3. mysql errmsg unknown_详解MySQL Server 启动时出现bug的解决方法

    在用的mysql Server 无法启动.日志如下: 复制代码 代码示例: 130507 12:22:11  mysqld started 130507 12:22:11 [Warning] opti ...

  4. Mysql 启动失败没日志,MySQL Server 5.7将无法启动,并且未填充错误日志

    我最近在Ubuntu 14.04上安装了MySQL Server 5.7(通过ansible使用this role是具体的).首次安装时启动很好,但是当我尝试重新启动它时,它会永远挂起: sudo s ...

  5. MySQL不能启动 Can't start server : Bind on unix socket: Permission denied

    [问题描述] MySQL不能启动 Can't start server : Bind on unix socket: Permission denied [解决方案] 查看my.cnf文件,找到.so ...

  6. mysql 长连接 has gone away_MySQL server has gone away报错原因分析/

    在平时和开发的交流 以及 在论坛回答问题的或称中会发现这个问题被问及的频率非常高. 程序中报错: MySQL server has gone away 是什么意思? 如何避免? 因此,感觉有必要总结一 ...

  7. MYSQL启动后报:ERROR! The server quit without updating PID file错误的问题解决

    注意:本文出自 "阿飞"的博客 ,如果要转载本文章,请与作者联系! 并注明来源: http://blog.csdn.net/faye0412/article/details/703 ...

  8. mySql学习笔记:比sql server书写要简单

    在学mySql.总的感觉,mySql与Sql Server差不多,语法都很象,但mySql也许是吸取了SQL SERVER的一些经验,SQL语句书写起来更加简单. 比如说,设置主键.索引,SQL SE ...

  9. Mysql Can't connect to MySQL server

    Mysql Can't connect to MySQL server on 'xxxx' (111) 从其它地方远程连接mysql服务器时如此错误 解决办法: # vi /etc/mysql/my. ...

最新文章

  1. 连接服务器_命令行连接FTP服务器
  2. 干货丨计算机视觉必读:图像分类、定位、检测,语义分割和实例分割方法梳理(经典长文,值得收藏)
  3. LNMP - Nginx访问控制
  4. hust sci列表
  5. xfce右键open in terminal失效问题解决
  6. 在大数据时代下金融风控的分类
  7. 【BZOJ1044】【tyvj3511】【codevs1870】木棍分割,二分答案+滚动数组+前缀和DP
  8. 设计模式学习-每日一记(16.模板方法模式)
  9. 百兆以太网口通信速率_千兆以太网的传输速度
  10. html实现在线展示pdf文件,在html页面中展示pdf文件,实现在线阅读
  11. excel报表导出功能
  12. 小鬼授权系统源码全解密源码 附授权代码
  13. AutoCAD Civil 3D-装配(标准横断面)
  14. 电话那头原来是个大美女
  15. 计算机怎么知道乘法优先,计算器算个明白.doc
  16. alienware笔记本过热处理
  17. MySQL 密码设置
  18. iOS的键盘种类(不同的键盘布局)
  19. maya! board_送给自学3d建模的你,自学maya,zbrush,substance一个月的感想
  20. C++之类和对象1:望尽天涯路

热门文章

  1. linux 终端 tty 简介
  2. GSS-API GSSAPI 介绍 通用的安全机制
  3. python3 f-strings格式字符串
  4. linux 内核加载错误 Invalid module format
  5. linux c 获取绝对路径各种方法分析
  6. Linux Rootkit 系列四:对于系统调用挂钩方法的补充
  7. PCRE函数简介和使用示例
  8. MFC中CArray类原理及其应用
  9. Android--EditText控件属性汇总
  10. 批处理 探测在线计算机,批处理(bat)用来监测Windows网络状态脚本