升级了一个(dev)cake php站点,不得不将数据库驱动程序从ado更改为sql server自己的驱动程序,因为cake 1.3不再支持ado。新的SQL Server驱动程序安装在php中,显示在phpinfo()中,应该可以工作,但当我尝试使用数据库加载页面时,会出现以下错误:

Warning (2): sqlsrv_query() expects parameter 1 to be resource, boolean given
[APP\plugins\datasources\models\datasources\dbo\dbo_sqlsrv.php, line 184]
Warning (512): SQL Error: An invalid parameter was passed to sqlsrv_query.
 [CORE\cake\libs\model\datasources\dbo_source.php, line 684]
Query: SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES

似乎发生的事情是我的连接没有在dbo_sqlsrv.php驱动程序中建立;一个“$this->connection”变量应该是连接资源,然后传递给sqlsrv_query(),它显然是一个错误的bool(我试图回显该变量,但它什么也没有显示)。
这是应该设置连接的位置:
sqlsrv_connect($this->config['host'] . $port, $params)

打印传入的变量可以得到以下结果:
SRV, 1433 Array ( [Database] => DB [CharacterSet] => char
[MultipleActiveResultSets] => [UID] => sa [PWD] => password )

这些参数都是正确的,是否有一种特定的方式我应该格式化或更改这个驱动程序的数据库配置数组,或者有什么东西我遗漏了?

最佳答案

此错误是由于过时的SQL Server驱动程序造成的。从下面安装最新版本允许SQL Server连接:
http://www.microsoft.com/download/en/details.aspx?id=20098

关于php - 使用Cake PHP SQL Server驱动程序时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6927761/

10-15 14:23