为什么PHP PDO在使用持久连接时连接到不同的数据库?

Fro*_*dik 11 php mysql pdo

我使用PHP的PDO连接到MySQL,如下所示:

$driver_options[PDO::ATTR_PERSISTENT] = true;
$db = new PDO('mysql:host='.$host.';dbname='.$db_name, $user, $pass, $driver_options);
Run Code Online (Sandbox Code Playgroud)

我在这台服务器上有2个数据库(让我们称之为database_A和database_B),有时会发生非常奇怪的事情.即使$ db_name 100%设置为'database_A',也会连接到'database_B'.

它发生在完全随机的状态.我可以再次运行相同的脚本10次,一切都很好.第11次这个问题发生了.

我永远不会指望这种情况发生.它让我很头疼.有人能解释一下吗?并且是不使用持久性的唯一解决方案?

Pli*_*xer 4

PDO::ATTR_PERSISTENT 受到部分支持,并且取决于您使用的 PHP 版本和 SQL 服务器。我建议永远不要在驱动器选项中将此属性设置为 true,因为它不稳定。

我能够复制您的情况,并且发现 ODBC 连接池层正在缓存连接,并且由于您的连接被设置为持久连接,因此每次我建立新连接时都会重置缓存。