【问题标题】:PDOException' with message 'SQLSTATE[08004] [1040] Too many connections带有消息“SQLSTATE [08004] [1040] 连接过多的 PDOException”
【发布时间】:2012-06-29 21:42:51
【问题描述】:

我的 php 文件中有错误。错误显示“PDOException”,消息为“SQLSTATE[08004] [1040] 连接过多”。我环顾四周,人们说我应该更改 mysql 服务器上的 max_connections。我这样做了,但它不起作用。

提前致谢!

【问题讨论】:

  • 您是在完成脚本后关闭连接,还是继续生成新的 PDO 对象和新的连接?
  • 我正在关闭它(我认为):$pdo = null;

标签: php mysql pdo


【解决方案1】:

您应该使用非持久连接。详情in PHP Manual

【讨论】:

  • 持久连接不会在脚本结束时关闭,而是在另一个脚本使用相同凭据请求连接时被缓存并重新使用。持久连接缓存允许您避免每次脚本需要与数据库通信时建立新连接的开销,从而使 Web 应用程序更快。但这也会导致打开太多连接而暂时没有关闭,因此您可能会收到该错误。 see example #4
  • 所以我应该将 PDO::ATTR_PERSISTENT => true 更改为 PDO::ATTR_PERSISTENT => false?
  • 我认为它默认为 false,因此您可以完全省略该属性
  • 那不是问题。每次我需要连接到服务器时,我都会使用一个名为 Server::connect() 的类。我可以像这样关闭连接吗: $pdo = Server::conect(); $pdo = null;
  • PDO 文档说 PDO 连接按照您的方式关闭,但要确保您应该在 Server::conect() 方法中提供代码。
猜你喜欢
  • 2018-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-31
相关资源
最近更新 更多