0

当我尝试通过 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 笔记本电脑进行连接。(这应该不是问题,因为香草版本有效。)

4

0 回答 0