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',