PHPで普通に?PDOでMSSQLには繋がるけどFuelPHPを通すと繋がらない。。。
return array( 'default' => array( 'connection' => array( 'dsn' => 'dblib:host=<hostname>;dbname=<databasename>', 'username' => 'sa', 'password' => '', ), ), );
db.phpはこんなかんじです。
繋がるソース↓
$pdo = new PDO("dblib:host=<hostname>;dbname=<database>", "sa", "");
何が違うのか。。。
2012.6.13
動くようになりました。
アドバイスを頂いてなんとか動かすことができました。
まず、app/config/config.phpでlocaleを設定します。
return array( (省略) 'locale' => 'ja_JP.utf8', (省略) );
するとエラーメッセージが変わりました。
PDOException [ HY000 ]: SQLSTATE[HY000]: General error: 195 General SQL Server error: Check messages from the SQL Server [195] (severity 15) []
いろいろ調べてみるとMSSQL 2005/2008でset namesはサポートしてない?
(今回はMSSQL 2005で試してました)
データベース接続は初期値がutf8となっているのでこれを空にしてやることで回避できました。
これでクエリビルダを利用してSQLを実行すると動作が確認できました。
が、モデルを利用してfind_allで実行するとエラー。(`)が邪魔してうまく実行ができませんでした。
ただ、上の二つ(set namesの回避と(`))はdb.phpを修正することでエラー回避ができました。
return array( 'default' => array( 'connection' => array( 'dsn' => 'dblib:host=<hostname>;dbname=<databasename>', 'username' => 'sa', 'password' => '', ), 'identifier' => '', // 空白を指定 'charset' => '', // 空白を指定 ), );
最終的にはこんなかんじのdb.phpとなりました。
とりあえず動いてよかったー。
0 件のコメント:
コメントを投稿