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. Redis集群官方推荐方案 Redis-Cluster
  2. thymeleaf th:if 案例
  3. 葡萄城报表V11 SP2新版本震撼发布!
  4. 生物学专业_江南大学微生物学(发酵)20002008历年考研专业课真题汇编
  5. javascript调用ActiveX接口失败的解决方案及使用心得
  6. matlab中input输入多个数_python怎么一次输入两个数
  7. 哈工大讯飞联合实验室发布少数民族多语言预训练模型CINO
  8. WK系列串口扩展芯片详解(含电路例程)
  9. 多传感器融合定位 第七章 基于滤波的融合方法
  10. vscode中文备注出现方框标注显示此字符非ascii字符如何取消
  11. [读论文] Electric Drive Technology Trends, Challenges, and Opportunities for Future Electric Vehicles
  12. 中学计算机竞赛教程,全国中小学信息技术课程教学大赛获奖案例初中信息技术八年级-设置自定义动画动作路径...
  13. 用HTML和CSS3制作3D动画
  14. 2021高考济南一中成绩查询,2021年济南重点高中名单及排名,济南高中高考成绩排名榜...
  15. Windows Server 2008 R2版本区分
  16. mysql怎么样_mysql怎么样
  17. 【HelloKitty团队项目】Beta阶段项目展示
  18. ARM 看门狗定时器
  19. matlab与模态分析,matlab模态分析程序
  20. saas应用与传统应用开发_如何从SaaS应用程序查询和提取数据

热门文章

  1. linux c编译错误 cmake_symlink_library: System Error: Operation not supported
  2. gcc选项-g与-rdynamic的异同
  3. 解决docker镜像无法删除的问题
  4. 解决警告inconsistent dll linkage
  5. Android项目目录结构分析
  6. tcp connection setup的实现
  7. android服务器压力测试,Android压力测试Monkey工具
  8. wxpython富文本_Python实例讲解 -- wxpython 基本的控件 (文本)
  9. mysql read timed out_java.sql.SQLException: Socket read timed out
  10. mysql8.0日期类型_MySQL8.0中的日期类数据及其函数