CodeIgniterでOracle Databaseを使う場合の正しい設定方法


(2020-03-26) この記事は http://blog.a-way-out.net/blog/2019/12/17/codeigniter-oracle-config/ のコピーです。今後、退会によりこの記事は削除される可能性があります。

結論

今までずっと間違ってましたが、char_setAL32UTF8 が正しい。
多分、今時のほとんどのユーザーはこれでOK。

$db['default'] = array(
    'dsn'    => '',
    'hostname' => ((isset($_SERVER['DB_HOSTNAME'])) ? $_SERVER['DB_HOSTNAME'] : 'localhost'),
    'username' => ((isset($_SERVER['DB_USERNAME'])) ? $_SERVER['DB_USERNAME'] : ''),
    'password' => ((isset($_SERVER['DB_PASSWORD'])) ? $_SERVER['DB_PASSWORD'] : ''),
    'database' => '',
    'dbdriver' => 'oci8',
    'dbprefix' => '',
    'pconnect' => false,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => false,
    'cachedir' => '',
    'char_set' => 'AL32UTF8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' =>  false,
    'compress' => false,
    'stricton' => false,
    'failover' => array(),
    'save_queries' => true
);

ちなみに dbcollat は、oci8 driver は使っていないので気にしなくてOK。

もし違う文字コード使っているかもという場合は、確認してください。

SELECT
  VALUE 
FROM
  NLS_DATABASE_PARAMETERS
WHERE
  PARAMETER = 'NLS_CHARACTERSET';


この記事はCC BY-SA 4.0(クリエイティブ・コモンズ 表示 4.0 継承 国際 ライセンス)の元で公開します。