###前提・実現したいこと
FuelPHP+Cygwin+Apache+PDO DblibでMSSQL(SQLServer 2014)データベースに接続し、プログラムから操作したいと考えています。
####環境:
- Windows 10 および Windows Server 2012 R2
- Cygwin
- Apache 2.4.25 (Unix)
- PHP 7.0.19
- fuelPHP 1.8
- freeTDS 1.00.37-1
- SQL Server 2014
####インストール済みPHPモジュール
bz2 Core curl date dom exif fileinfo filter ftp gd gettext gmp hash imap intl json ldap libxml mbstring mysqli mysqlnd openssl pcre PDO pdo_dblib pdo_mysql PDO_ODBC pdo_sqlite readline Reflection session SPL standard xml zlib
###発生している問題・エラーメッセージ
PHP直書きでPDOから呼び出すと正常に接続できますが、fuelPHP経由で接続しようとすると下記エラーが発生します。
2002! Fuel\Core\Database_Exception [ 2002 ]: SQLSTATE[HY000] [2002] No such file or directory
###該当のソースコード
- PHP直書きでうまくいったコード
//PDOオブジェクトの生成 $serverName = 'localhost'; $database = 'DB名'; $table = 'セレクトするテーブル名'; $uid = 'ユーザー名'; $pwd = 'パスワード'; $conn = new PDO( "dblib:server=$serverName;Database = $database", $uid, $pwd); //SQL 実行 $sql = 'select * from '.$database.'.'.$table.';'; echo $sql; $result = $conn->query($sql); // var_dump($result); foreach ($conn->query($sql) as $row) { var_dump($row); echo ""; } // セッション解放 $conn = null;
- 失敗したfuelPHP上のプログラム
テストとして、
hoge\fuel\app\classes\controller\welcome.php
に下記のアクションを末尾に追加しました。
public function action_dbtest() { $colums = array(); $result = DB::select_array()->from('テーブル名')->execute(); var_dump($result[1]); exit; }
また、
hoge\fuel\app\config\db.php
は下記のように記述しています。
return array( 'active' => 'default', 'default' => array( 'type' => 'pdo', 'connection' => array( 'dsn' => 'dblib:server="localhost";Database="データベース名";', 'username' => 'dbユーザー名', 'password' => 'dbパスワード', 'persistent' => false, ), 'identifier' => '', 'table_prefix' => NULL, 'charset' => NULL, ) );
###試したこと
上記db.php
の
'dsn' => 'dblib:server="localhost";Database="データベース名";'
を
'dsn' => 'dblib:server="127.0.0.1";Database="データベース名";'
に変更するのは試していますが、接続できませんでした。
FreeTDS(/etc/freetds/freetds.conf)の設定
[localhost] host = 127.0.0.1 port = 1433 tds version = 12.0
当方fuelPHPの初心者です。
日本語ドキュメントも確認してはいるのですが、解決には至っていません。
同様のエラーでmysqlの情報はネット上にあるのですが、mssqlについては同じ状況のトラブルについての情報が見つけられませんでした。
解決策をご存知の方がいらっしゃいましたら教えていただけましたら幸いです。
よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/11 10:18