14
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

FuelPHP で PDOによるPostgreSQL接続の罠

設定

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' を渡しておくと、安心かもしれない。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
14
Help us understand the problem. What are the problem?