0

PDO 経由で MSSQL データベースに接続しようとすると、FuelPHP が奇妙なことをしているようです。

FuelPHP の外で作業する

ローカル サーバーのバニラ PHP ページで次のことを試しました。

<?php
$mssql = new \PDO('dblib:host=<IP OF HOST>;dbname=<DBNAME>', '<USER>', '<PASS>');

そして、すべてがうまくいきます。接続され、期待どおりに簡単に DB にクエリを実行できます。

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 内で 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 接続でさえ大混乱を引き起こしているようです。

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