野鳥日記

野鳥と技術のブログ http://www.kiriya-system.com/

fuelphpのdb.php設定する際、pdoとmysqliだと書き方が変わる

fuelphpのdb.php設定する際、pdoとmysqliだと書き方が変わる

 

大事なことなので、二回言いました。

 

pdoからmysqliにドライバ変更しようとして、ハマった。

最初は単純に

    'type'             => 'pdo',

を↓に書き換えていた。

    'type'             => 'mysqli',

 

これだと、

No MySQLi Connection

の例外が発生し怒られる。

しかし、原因がさっぱりわからない。

 

そもそもエラーメッセージが不親切なので、原因がわかるように

\fuel\core\classes\database\mysqliをハックする

135行目あたりの例外処理を下記のようにする。

 

            throw new \Database_Exception('No MySQLi Connection<br>\n'
                . $e->getMessage() . "<br>\n"
                . "hostname:" . $hostname . "<br>\n"
                . "username:" . $username . "<br>\n"
                . "password:" . $password . "<br>\n"
                . "database:" . $database . "<br>\n"
                . "port:" . $port . "<br>\n"
                , 0);

 これでようやく、設定の書き方が間違ってることに気が付いた。

ちなみにパスワードまで表示してるので、

本番公開の際は、例外を非表示にすることを前提にしている。

 

追記:

本番環境(FUEL_ENVがproductionの場合)は表示されない。ちゃんとFUEL_ENVを設定しましょう。

 http://mkkn.hatenablog.jp/entry/2013/12/04/120701

 

 

↓ちゃんと公式ドキュメントに2通りの書き方書いてあるね。

http://fuelphp.jp/docs/1.7/classes/database/introduction.html

 

抜き出すとこんな感じ

 

pdo

'dsn' => 'pgsql:host=localhost;dbname=fuel_db',

mysqli

'hostname' => 'localhost',

'port' => '3306',

'database' => 'fuel_db',