【问题标题】:PHP PDO dblib (mssql) with persistent connections not working具有持久连接的 PHP PDO dblib (mssql) 不起作用
【发布时间】:2015-12-04 16:04:02
【问题描述】:

按照在线示例和 PDO 文档,我有这一行用于使用持久连接创建 PDO 对象:

$p = new PDO('dblib:host=SOMEHOSTNAME;dbname=SOMEDB',$user,$password,[PDO::ATTR_PERSISTENT=>true]);

官方文档示例:http://php.net/manual/en/pdo.connections.php

我们得到的错误:

SQLSTATE[IM001]:驱动不支持该功能:驱动不支持设置属性

【问题讨论】:

  • 您是否连接到 MS SQL 服务器?
  • 是的,我们是。 dblib 是一个使用 freetds 的 mssql 驱动程序。
  • This extension is not available anymore on Windows with PHP 5.3 or later. 表示 dblib 驱动程序在运行 PHP 5.3 或更高版本的 Windows 上不可用。您应该改用PDO_SQLSRVPDO_SQLSRV 了解更多信息。
  • 你是 100% 正确的。我在nix系统上使用它而不是Windows。我确实有一个将 SQLSRV 用于其他用途的 Windows 实例,这很好。我认为我不需要提及我在 Nix 上,因为 dblib 只在上面。
  • 根据我的研究,pdo 驱动程序dblib 不允许设置属性。这就是您收到错误消息的原因。尝试将dblib: 更改为sqlsrv:

标签: php sql-server pdo freetds


【解决方案1】:

您可以通过安装 PDO ODBC 驱动程序来尝试此操作。
如果您使用的是 PDO ODBC 驱动程序并且您的 ODBC 库支持 ODBC 连接池(unixODBC 和 Windows 是其中的两个;可能还有更多),那么建议您不要使用持久 PDO 连接,而是保留连接缓存到 ODBC 连接池层... http://php.net/manual/en/pdo.connections.php(示例#4 持久连接:注 2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-15
    • 2016-10-19
    • 1970-01-01
    • 2013-02-13
    • 1970-01-01
    • 2011-09-21
    • 2012-07-24
    • 2014-01-21
    相关资源
    最近更新 更多