当我尝试通过PDO连接到MSSQL数据库时,FuelPHP似乎做了一些奇怪的事情。
我在本地服务器上的vanilla PHP页面中尝试了以下内容:
<?php
$mssql = new \PDO('dblib:host=<IP OF HOST>;dbname=<DBNAME>', '<USER>', '<PASS>');
一切正常。它连接起来,我可以像我期望的那样轻松查询数据库。
但是,当我尝试在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中查询DB,如下所示:
$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的控制器内部执行原始基本连接时,踢球者是什么我得到相同的错误消息。所以看起来FuelPHP正在破坏甚至正常的PDO连接。
<?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笔记本电脑连接。 (这不应该是一个问题,因为香草版本有效。)