当我尝试通过 PDO 连接到 MSSQL 数据库时,FuelPHP 似乎在做一些奇怪的事情。
在 FuelPHP 之外工作
我在本地服务器上的普通 PHP 页面中尝试了以下内容:
<?php
$mssql = new \PDO('dblib:host=<IP OF HOST>;dbname=<DBNAME>', '<USER>', '<PASS>');
一切正常。它连接起来,我可以像我期望的那样轻松查询数据库。
不在 FuelPHP 内部工作
但是,当我尝试在 config/db.php 中添加具有基本相同信息的连接时,会引发异常。
<?php
return array(
'mssql' => array(
'connection' => array(
'dsn' => 'dblib:host=<IP OF HOST>;dbname=<DBNAME>',
'username' => '<USER>',
'password' => '<PASS>',
),
'type' => 'pdo',
'table_prefix' => '',
),
);
随后尝试在 FuelPHP 中查询数据库,如下所示:
$q = \DB::select()
->from('table')
->limit(5);
$r = $q->execute('mssql');
抛出以下异常:Fuel\Core\Database_Exception [ 20002 ]: SQLSTATE[01002] Adaptive Server connection failed (severity 9)
当我尝试在 FuelPHP 的控制器中进行原始的基本连接时,我得到了相同的错误消息。因此,即使是普通的 PDO 连接,FuelPHP 似乎也会造成严重破坏。
FuelPHP 控制器中的基本连接尝试示例。
<?php
class Controller_Welcome extends Controller
{
public function action_index()
{
$mssql = new \PDO('dblib:host=<IP OF HOST>;dbname=<DBNAME>', '<USER>', '<PASS>');
}
}
作为参考,我正在使用 PHP 5.3.16 并使用 FreeTDS 从我的 OS X 笔记本电脑进行连接。(这应该不是问题,因为香草版本有效。)