大家好日子。我有一个奇怪的错误。我创建了一个像这样的聊天:
直到今天我收到此错误时才工作正常:
Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [1040] Too many connections' in /var/www/html/dbdev/include/Zend/Db/Adapter/Pdo/Abstract.php:129
Stack trace: #0 /var/www/html/dbdev/include/Zend/Db/Adapter/Pdo/Abstract.php(129): PDO->__construct('mysql:host=loca...', '', '', Array)
s#1 /var/www/html/dbdev/include/Zend/Db/Adapter/Pdo/Mysql.php(96): Zend_Db_Adapter_Pdo_Abstract->_connect()
s#2 /var/www/html/dbdev/include/Zend/Db/Adapter/Abstract.php(448): Zend_Db_Adapter_Pdo_Mysql->_connect()
s#3 /var/www/html/dbdev/include/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('select profile_...', Array)
s#4 /var/www/html/dbdev/include/Zend/Db/Adapter/Abstract.php(782): Zend_Db_Adapter_Pdo_Abstract->query('select profile_...', Array)
s#5 /var/www/html/dbdev/include/Profile.php(43): Zend_Db_Adapter_Abstract->fetchPairs('select profile_...')
s#6 /var/www/html/dbdev/public_html/index.php(29): Profile->load()
s#7 {main} Next exception 'Zend_Db_Adapter_Exception' with in /var/www/html/dbdev/include/Zend/Db/Adapter/Pdo/Abstract.php on line 144
问题是我们不是那么多......(8)并且我认为数据库不能同时支持超过8到16个连接(在规范上写的聊天必须支持50-100个用户所以8是......小)。
所以...可以告诉我为什么会这样(昨天我们15岁并且工作正常)以及如何解决它?谢谢您的帮助。如果您需要任何代码示例,请询问。
答案 0 :(得分:34)
“Too Many Connections”错误有很多不同的原因。
在MySQL.com上查看此常见问题解答页面:http://dev.mysql.com/doc/refman/5.5/en/too-many-connections.html
检查my.cnf文件中的“max_connections”。如果不存在,请尝试:
[mysqld]
set-variable=max_connections=250
但是默认值是151,所以你应该没问题。
如果您在共享主机上,则可能是其他用户占用了太多连接。
需要注意的其他问题是使用持久连接和耗尽磁盘空间。
答案 1 :(得分:15)
错误SQLSTATE[HY000] [1040] Too many connections
是一个SQL错误,与sql server有关。可能有其他应用程序连接到服务器。服务器具有最大可用连接数。
如果你有phpmyadmin,你可以使用'变量'选项卡来检查设置是什么。
您还可以像这样查询状态表:
show status like '%onn%';
或者有些不一致。检查the manual有哪些变量
(请注意,'连接'不是当前连接,请检查该链接:))
答案 2 :(得分:5)
如果达到mac连接限制
转到/etc/my.cnf
并在[mysqld]
部分下添加
max_connections = 500
并重启MySQL。
答案 3 :(得分:2)
请检查您是否为每个请求打开了一个新连接(mysql_connect(...))。如果这样做,请确保之后关闭连接(使用mysql_close($ link))。
此外,您应该考虑更改此行为,因为为每个用户保持稳定的连接可能是完成任务的更好方法。
如果你还没有,请看一下这个显而易见但仍然有用的信息资源:http://php.net/manual/function.mysql-connect.php
答案 4 :(得分:2)
这可能是由于同时连接太多或同时进行多次聊天而导致的。也可能因为会话太多而发生。
解决此问题的最佳方法是重启MySQL。
keys.equals(finishedLine3)
或
finishedLine3
或
service mysqld restart
答案 5 :(得分:1)
如果需要在不重新启动MySQL的情况下增加MySQL连接,请执行以下操作,如果您不知道配置文件,请在下面使用mysqlworkbench或phpmyadmin或命令提示符在以下查询中运行。
Working Draft
这些设置将在MySQL重新启动时更改。
要进行永久更改,请在my.cnf中添加以下行,然后重新启动MySQL。
mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 151 |
+-----------------+-------+
1 row in set (0.00 sec)
mysql> SET GLOBAL max_connections = 250;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 250 |
+-----------------+-------+
1 row in set (0.00 sec)