LoginSignup
12
14

More than 5 years have passed since last update.

FuelPHP で PDOによるPostgreSQL接続の罠

Last updated at Posted at 2014-07-19

設定

FuelPHP でDBへの接続設定は、
APPPATH/config/db.php
APPPATH/config/production/db.php
APPPATH/config/development/db.php
にて行います。

FuelPHPのドキュメント によれば、

// PDO ドライバで PostgreSQL を使う設定
'production' => array(
    'type'           => 'pdo',
    'connection'     => array(
        'dsn'            => 'pgsql:host=localhost;dbname=fuel_db',
        'username'       => 'your_username',
        'password'       => 'y0uR_p@ssW0rd',
        'persistent'     => false,
        'compress'       => false,
    ),
    'identifier'   => '"',
    'table_prefix'   => '',
    'charset'        => 'utf8',
    'enable_cache'   => true,
    'profiling'      => false,
),

このように設定するとありますが、charset の指定があると、

Fuel\Core\Database_Exception [ 7 ]:
SQLSTATE[08006] [7] invalid connection option "charset"

とエラーになる。
そこで、上記の配列から charset の指定を削除しても、依然としてエラーに。

これは、
COREPATH/config/db.php
にもcharsetの設定があるため。

COREPATH 以下のファイルを編集するのは得策ではないので、
APPPATH 以下の設定ファイルで、

'charset' => NULL,

と上書きして、万事解決。

DSNに options='--client_encoding=UTF8' を渡しておくと、安心かもしれない。

12
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
14