You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP使用PDO连接SQL Server报错:不支持的PDO属性问题咨询

解决PDO连接SQL Server时的"An unsupported attribute"错误

你使用的PHP连接代码如下:

$servername = "";
$username = "";
$password = "";
$database = "";
$port = "1433";
try {
    $conn = new PDO("sqlsrv:server=$servername,$port;Database=$database;ConnectionPooling=0", $username, $password,
        array(
            PDO::ATTR_PERSISTENT => true,
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
        )
    );
} catch (PDOException $e) {
    echo ("Error connecting to SQL Server: " . $e->getMessage());
}

运行后出现错误:

Error connecting to SQL Server: SQLSTATE[IMSSP]: An unsupported attribute was designated on the PDO object.

错误含义

这个错误说明你在PDO连接的属性数组里,使用了SQL Server的PDO驱动(sqlsrv)不支持的属性。具体到你的代码,问题出在PDO::ATTR_PERSISTENT => true——sqlsrv驱动从设计上就不支持PDO的持久化连接属性。

解决建议

  • 移除不支持的持久化属性:直接删除PDO::ATTR_PERSISTENT => true这一行,保留错误模式配置即可。修改后的连接参数数组如下:
    array(
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
    )
    
  • 区分连接池与持久化连接:你在连接字符串中设置了ConnectionPooling=0,这是sqlsrv驱动自带的连接池控制参数,和PDO的ATTR_PERSISTENT不是同一个概念,两者不要混淆。如果不需要禁用驱动级连接池,可以去掉这个参数。
  • 更新驱动版本:确保你安装的是最新版的Microsoft PHP SQL Server驱动,旧版本可能存在更多属性兼容问题,可通过phpinfo()查看当前驱动版本。

内容的提问来源于stack exchange,提问作者rck

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 01:50:20