php - 为什么 PHP PDO 在使用持久连接时连接到不同的数据库?
问题描述
我使用 PHP 的 PDO 连接到 MySQL,如下所示:
$driver_options[PDO::ATTR_PERSISTENT] = true;
$db = new PDO('mysql:host='.$host.';dbname='.$db_name, $user, $pass, $driver_options);
我在这台服务器上有 2 个数据库(我们称它们为 database_A 和 database_B),有时会发生非常奇怪的事情。即使 $db_name 100% 设置为“database_A”,也会连接到“database_B”。
它的发生是完全随机的。我可以再次运行相同的脚本 10 次,一切都很好。第 11 次出现此问题。
我从没想过会发生这种情况。这让我很头疼。谁能解释一下?是唯一不使用持久性的解决方案吗?
解决方案
PDO::ATTR_PERSISTENT 受部分支持,取决于您使用的 PHP 版本和 SQL 服务器。我建议不要在驱动器选项中将此属性设置为 true,因为它不稳定。
我能够复制您的案例,并且发现 ODBC 连接池层正在缓存连接,并且由于您的连接被设置为持久连接,因此每次建立新连接时都会重置缓存。
推荐阅读
- amazon-web-services - 使用解析器自动创建 DynamoDB createdAt、updatedAt 和 version 属性
- pandas - 计算 Pandas 的复利
- azure - 有没有办法使用 Graph API 将 Azure Active Directory 角色添加到托管标识?
- flutter - 谷歌登录在启动时崩溃 Flutter 应用程序
- android - 如何在 sharedpreference 中存储 edittext 的输入值并将其显示在列表视图的下一个活动中?
- flutter - 如何通过http post方法将图像上传到rest API?
- python - AWS 安装 apache 和 FTP 服务器
- google-apps-script - AppScript中,一次编辑多个范围时,rangeList是如何获取的?
- google-app-engine - 无法在 Google Cloud 上启用 Identity Platform
- powershell - 如何通过预定义的脚本块或其他方式替换多个函数中重复的脚本语句?