Symfony2单元测试:PDOException:SQLSTATE [1040]连接太多

时间:2014-09-08 08:33:58

标签: unit-testing symfony pdo

当我为我的应用程序运行单元测试时,首先测试成功,然后大约100,由于PDOException(连接太多),测试开始失败。我已经搜索过这个问题,但是无法解决它。

我的配置如下:

<phpunit
        backupGlobals               = "false"
        backupStaticAttributes      = "false"
        colors                      = "true"
        convertErrorsToExceptions   = "true"
        convertNoticesToExceptions  = "true"
        convertWarningsToExceptions = "true"
        processIsolation            = "false"
        stopOnFailure               = "false"
        syntaxCheck                 = "false"
        bootstrap                   = "bootstrap.php.cache" >

如果我将processIsolation更改为&#34; true&#34;,则所有测试都会生成错误(E):

Caused by ErrorException: unserialize(): Error at offset 0 of 79 bytes

为此,我尝试设置&#34; detect_unicode = Off&#34;在php.ini文件中。

如果我以较小的批次进行测试,例如使用&#34; - 组合某些内容&#34;,所有测试都是成功的。

有人可以帮我解决一次运行所有测试的问题吗?我真的想摆脱PDOException。

提前致谢!

2 个答案:

答案 0 :(得分:1)

您应该增加数据库服务器中的最大并发连接数。

如果您使用的是MySQL,请编辑/etc/mysql/my.cnf并将max_connections参数设置为您需要的并发连接数。然后重启MySQL服务器。

请记住:理论上,物理极限非常高。但是,如果您的查询导致高CPU负载或内存消耗,您的数据库服务器可能会耗尽其他进程所需的资源。这意味着,您可能会耗尽内存,或者您的系统可能会过载。

答案 1 :(得分:1)

对于遇到相同问题的人,这里有更具体的步骤来配置my.cnf文件。 如果您确定自己位于正确的my.cnf文件中,请将max_connections = 500(默认为151)添加到[mysqld]中的my.cnf部分。不要把它放在[client]部分。

要确保您位于右侧my.cnf,如果您从Homebrew或XAMMPP安装了多个mysqld,请使用mysqld为XAMMPP找到正确的/Applications/XAMPP/xamppfiles/sbin/mysqld --verbose --help | grep -A 1 "Default options",您将获得一些东西像这样:

Default options are read from the following files in the given order: /Applications/XAMPP/xamppfiles/etc/xampp/my.cnf /Applications/XAMPP/xamppfiles/etc/my.cnf ~/.my.cnf

通常是/Applications/XAMPP/xamppfiles/etc/my.cnf