FuelPHPはPostgrSQLが非標準だそうです。
→ PHPカンファレンス 2012 フレームワークアップデート
でもPDOドライバ使えば特に問題なく(と思っています…)使えます。
マニュアルの通りテーブルを作ってAuth パッケージがちゃんと動くことを確認しました。
※ネイティブのドライバがないことのデメリットが自分には分かりません…PDOを介すと遅いとかあるのでしょうか…
PostgreSQLにPDOドライバで接続するためのdb.phpの書き方はマニュアルに書いてある通りで
'production' => array( 'type' => 'pdo', 'connection' => array( 'dsn' => 'pgsql:host=localhost;dbname=fuel_db', 'username' => 'your_username', 'password' => 'y0uR_p@ssW0rd', 'persistent' => false, ), 'identifier' => '"', 'table_prefix' => '', 'charset' => 'utf8', 'enable_cache' => true, 'profiling' => false, ),
のようになります。
さて、「PostgreSQL fuelphp pdo」で検索するとFuelPHP、PDO、Postgresで実験。 : 生存戦略 しましょうかのページが引っかかります。
※ FuelPHP、PDO、Postgresで実験。 : 生存戦略 しましょうかのページ では、その後に、mb_convert_encodingでSJISからUTF8に変換しないと日本語の挿入でエラーがでたと書いてありましたが、これは…どこかの設定がSJISなんじゃないかなと思います。私の環境では、 mb_convert_encoding は特にいりませんでしたし、いらないと思います。
また、 マニュアルにがちょっといけてなくて、「データベースの設定ファイルは APPPATH/config/db.php にあります」と書いてあるので、そのdb.phpを編集するとNGです。
APPPATH/config/development/db.php、 APPPATH/config/production/db.php、もそれなりに書き換えてあげないとNGです。
APPPATH/config/db.phpをちゃんとPDOドライバで書いているのに、なぜかmysqlで接続しようとしていて、なぜかと思ったら、そういうことでした。
※Fuelphpは、設定が上書きされていきます。 APPPATH/config/db.php とAPPPATH/config/development/db.php に同じ項目があった場合、APPPATH/config/development/db.php の設定で動きます。
早川聖司(2012)FuelPHP入門 ソーテック社には、ちゃんと APPPATH/config/development/db.php を変更しますと書いてあるのですが、マニュアルの通りにやってすっかりはまりました…
→ PHPカンファレンス 2012 フレームワークアップデート
でもPDOドライバ使えば特に問題なく(と思っています…)使えます。
マニュアルの通りテーブルを作ってAuth パッケージがちゃんと動くことを確認しました。
※ネイティブのドライバがないことのデメリットが自分には分かりません…PDOを介すと遅いとかあるのでしょうか…
PostgreSQLにPDOドライバで接続するためのdb.phpの書き方はマニュアルに書いてある通りで
'production' => array( 'type' => 'pdo', 'connection' => array( 'dsn' => 'pgsql:host=localhost;dbname=fuel_db', 'username' => 'your_username', 'password' => 'y0uR_p@ssW0rd', 'persistent' => false, ), 'identifier' => '"', 'table_prefix' => '', 'charset' => 'utf8', 'enable_cache' => true, 'profiling' => false, ),
のようになります。
さて、「PostgreSQL fuelphp pdo」で検索するとFuelPHP、PDO、Postgresで実験。 : 生存戦略 しましょうかのページが引っかかります。
ここに、 identifier は
'"' ←ダブルクオーテーション(")をシングルクォーテーションで囲う
または
'' ←空にする
と書いてありますが、マニュアルの通り'"'が正解かなと思います。
大抵の場合、''で問題ないのですが、 列名に予約語…たとえばtimestampだったりgroupだったりする場合、列名を"で囲わないといけないので、'"'が正解だと思っています。
Authパッケージを使う際には、groupという名前の列を持つテーブルを作成しないといけないので、そこではまります。
大抵の場合、''で問題ないのですが、 列名に予約語…たとえばtimestampだったりgroupだったりする場合、列名を"で囲わないといけないので、'"'が正解だと思っています。
Authパッケージを使う際には、groupという名前の列を持つテーブルを作成しないといけないので、そこではまります。
※ FuelPHP、PDO、Postgresで実験。 : 生存戦略 しましょうかのページ では、その後に、mb_convert_encodingでSJISからUTF8に変換しないと日本語の挿入でエラーがでたと書いてありましたが、これは…どこかの設定がSJISなんじゃないかなと思います。私の環境では、 mb_convert_encoding は特にいりませんでしたし、いらないと思います。
また、 マニュアルにがちょっといけてなくて、「データベースの設定ファイルは APPPATH/config/db.php にあります」と書いてあるので、そのdb.phpを編集するとNGです。
APPPATH/config/development/db.php、 APPPATH/config/production/db.php、もそれなりに書き換えてあげないとNGです。
APPPATH/config/db.phpをちゃんとPDOドライバで書いているのに、なぜかmysqlで接続しようとしていて、なぜかと思ったら、そういうことでした。
※Fuelphpは、設定が上書きされていきます。 APPPATH/config/db.php とAPPPATH/config/development/db.php に同じ項目があった場合、APPPATH/config/development/db.php の設定で動きます。
早川聖司(2012)FuelPHP入門 ソーテック社には、ちゃんと APPPATH/config/development/db.php を変更しますと書いてあるのですが、マニュアルの通りにやってすっかりはまりました…
生存戦略~~を書いてる者です。
文字のエンコードですが、なにが原因だったかは忘れましたが、仰る通りで、そのまま解決できました。
ちょっと多忙でブログ更新してなかったもんで。