TP5.0框架 PDO连接MYSQL 报错:TOO MANY CONNECTIONS 解决方法

由于技术经验有限,百度了许多关于这方面的案例,基本上都类似于
修改mysql目录下的my.ini,约在42行下方加入max_connections = 1000 。重启mysql就行。
Mysql达到连接数上限了,修改一下mysql的配置即可。

show variables like ‘%max_connections%’;
set global max_connections = 5000;
这样的答案,虽然可以缓解当下情况,但是终究没有解决本质的问题,经过摸索,问题终于得到了解决。
配置一下长连接就可以了。

找到项目中的databases.php 也就是数据库的配置文件

找到 params 数组,一般是空的。

给它配置参数:

  1. \PDO::ATTR_PERSISTENT => true,
  2. \PDO::ATTR_CASE => \PDO::CASE_LOWER,

 

接下上个图:

 

清理一下缓存,再刷新一下。 my.ini配置文件也不用修改。就可以了。

 

在一个for循环中,多次使用thinkphp函数进行了数据库查询。报错信息如下:

PHP
 SQLSTATE[08004][1040]Too many connections

截图如下:

苏南大叔:thinkphp5,报错too many connections,怎么办? - too-many-connections

thinkphp5,报错too many connections,怎么办?(图3-2)

当然截图里面显示的错误位置,对于一般的程序员来说,可能并不是个有用的信息。程序员所触发错误的地方,可能是这样的:

PHP
foreach ($details as $key => $detail) {
  $res = db("sometable")->where(["link" => $detail["link"]])->find();
  if($res){
    db('sometable')->insert($detail);
  }
}

修复方案

这个修复的方案非常简单,修改语句db('table')Db::table('table')。例如:

PHP
foreach ($details as $key => $detail) {
  $res = Db::table("sometable")->where(["link" => $detail["link"]])->find();
  if($res){
    Db::table('sometable')->insert($detail);
  }
}
苏南大叔:thinkphp5,报错too many connections,怎么办? - thinkphp-code-bug
thinkphp5,报错too many connections,怎么办?(图3-3)

 

本站发布的文章及附件仅限用于学习和研究目的;不得将上述内容用于商业或非法用途,否则后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。
如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。
飞鱼源码资源网 » TP5.0框架 PDO连接MYSQL 报错:TOO MANY CONNECTIONS 解决方法

提供最优质的资源集合

立即查看 了解详情