2017-09-25 101 views
0

我正在将Zend Framework 3应用程序的DBAL迁移到Doctrine。数据检索部分的迁移完成。数据保存仍然是Zend\Db驱动。Windows Server 2008 ZF3中的“每个套接字地址只有一个用法”错误

现在我想部署新版本的服务器,并得到这个错误:

[PDOException: SQLSTATE[HY000] [2002] Only one usage of each socket address (protocol/network address/port) is normally permitted. in D:\Path\to\my-project\vendor\zendframework\zend-db\src\Adapter\Driver\Pdo\Connection.php:266

没有我的本地Debian的虚拟机上发生的错误,但只有运行Windows Server上的PHPUnit的时候。

只看了一眼Zend\Db\Adapter\Driver\Pdo\Connection.php:266。这是Zend\Db尝试创建新连接的地方。

由于这个问题之前没有被观察到,我想这与它的(部分)迁移到教义有关。也许应用程序不会关闭为Zend\Db打开的数据库连接,并尝试使用与Doctrine完全相同的设置打开一个新连接。反之亦然:打开Doctrine的PDO连接,同时框架试图为Zend\Db打开一个新的连接。

如何解决此问题并使用Doctrine和Zend\Db

回答

0

我一直在用PDO运行它。我对它的研究表明,这与MySQL或PHP无关,但与Windows有关。你太快请求太多请求。当windows关闭一个端口时,它会将其置于time_wait状态长达240秒(默认),并且该端口在time_wait状态出现之前不能使用。

related to this stack overflow question from 2012:

相关问题