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
相关产品推荐
相关产品推荐

