データベース設定
この項では、データベースにアクセスる為の設定方法を解説しています。
CodeIgniterのデータベース設定では、
一つの設定ファイルで複数のデータベースに接続するための設定が可能です。
また、「開発(development)」「テスト(testing)」「本番(production)」といった 環境毎に設定ファイル
を作成することもできるようになっています。
データベース設定ファイル
データベース設定ファイルは、「application/config/」ディレクトリ、もしくは、下記で示す環境毎の
ディレクトリにファイル名「database.php」として作成します。
- 開発用「application/config/development/」
- テスト用「application/config/testing/」
- 本番用「application/config/production/」
データベース識別
データベースの設定情報は「$db」変数に二次元連想配列として格納されます。
一次元目の添え字(インデックスキー)には複数のデータベースを識別するための文字列を指定し、
二次元目の添え字に各設定項目名を指定していきます。
CodeIgniterをインストールした直後には、「default」というデータベース識別子が用意されています。
$db['slave'] = array();
$active_group
データベースに接続(インスタンス生成)する際には、どのデータベースに接続するかを指定する必要がありまが、
指定されなかった場合に、設定情報を読込むためのデフォルトのデータベースを識別する
識別子を設定します。
CodeIgniterのインストール時には、「default」が設定されています。
ActiveRecord設定
$active_record
Active Record の機能を利用するか設定します。FALSEを設定すると Active Recordの機能は利用できなくなります。
設定項目
利用するデータベースそれぞれに下記の設定項目を設定します。
hostname
データベースサーバのIPアドレス、または、ホスト名を指定します。
また、TCPポート番号を「:」に続けて指定することも可能です。
username
データベースにアクセスするデータベースユーザ名を指定します。
password
データベースにアクセスするデータベースユーザのパスワードを指定します。
database
アクセスするデータベースのデータベース名を指定します。
dbdriver
利用するデータベースドライバーを指定します。
CodeIgniterインストール時は下記のドライバーが利用できます。
DBドライバー | 概要 |
---|---|
mysql | PHPのMySQLモジュールを利用しています |
mysqli | PHPのMySQL改良版拡張モジュールを利用しています |
postgre | PHPのPostgreSQLモジュールを利用しています |
odbc | PHPのODBCモジュールを利用しています |
mssql | PHPのMssqlモジュールを利用しています |
sqlite | PHPのSQLiteモジュールを利用しています |
oci8 | PHPのOracle OCI8モジュールを利用しています |
dbprefix 一番上に戻る
テーブル名のプレフィックス(接頭辞)を指定します。
テーブル名にプレフィックス(接頭辞)を付けることで、同じソースコードを流用することが可能になります。
例えば、一つのデータベースに同じテーブル構造を持つテーブル「aaa_user_table」「bbb_user_table」を作成し、
CodeIgniterで構築した二つの同じWebアプリを、設定ファイルのこの設定を変更するだけで利用できます。
- sample_database
- aaa_user_table
- bbb_user_table
- 一つ目のWebアプリ
- 二つ目のWebアプリ
- 同じソースコード
| id | int(11) | | name | varchar(32) | | email | varchar(64) |
| id | int(11) | | name | varchar(32) | | email | varchar(64) |
$db['default']['dbprefix'] = 'aaa_';
$db['default']['dbprefix'] = 'bbb_';
$query = $this->db->get('user_table');
pconnect 一番上に戻る
持続的な接続をオープンするか設定します。
詳しくはコチラを参照してください。
`mysqli`ドライバー利用時には「hosntame」の設定でサーバのアドレスの前に「p:」を付けることで、 持続的な接続が得られます。
$db['default']['dbdriver'] = 'mysqli';
db_debug 一番上に戻る
TRUEを指定すると、データベースエラーが発生した際に処理を停止させ、ブラウザに エラーメッセージを表示します。
本番環境では、不要な情報が漏洩してしまいますので「FALSE」を指定することをお勧めします。
- config/development/database.php
- config/production/database.php
cache_on
cachedir
一番上に戻る
読込みクエリの結果をキャッシュしたい場合は、「cache_on」にTRUEを指定し、
「cachedir」にキャッシュファイルを保存するディレクトリパスを指定します。
(書込みクエリはキャッシュされることはありません。)
「cachedir」には、絶対パスかドキュメントルートからの相対パスを指定します。
「cache_on」にTRUEを指定しても、「cachedir」を設定しなかった場合は、 キャッシュは有効になりません。
$db['default']['cachedir'] = APPPATH . 'cache/db';
char_set 一番上に戻る
データベースと接続するデフォルトの文字コードを指定します。
dbcollat 一番上に戻る
データベースと接続するデフォルトの照合順序を指定します。
swap_pre 一番上に戻る
SQLクエリに含まれる「dbprefix」で設定されたテーブル名の接頭辞を「swap_pre」で設定した接頭辞に置換して クエリを送信します。
autoinit 一番上に戻る
「$this->load->databae()」メソッドにより、データベースインスタンスがロードされるタイミングで データベースに接続する場合は、「TRUE」を指定します。
「FALSE」を指定した場合は、最初にSQLクエリを発行する直前にデータベースに接続します。
stricton 一番上に戻る
「TRUE」を指定すると、データベース接続直後に下記のSQLを発行します。
これにより、データをセットする際の自動型変換などが行われず、誤った型や、「NOT NULL」のカラムに NULLデータがセットされると、エラーとなります。
デフォルト値
データベース情報項目を指定しなかった際に、デフォルトとして利用される情報です。
設定項目 | デフォルト値 |
---|---|
dbdriver | mysql |
dbprefix | '' |
pconnect | FALSE |
db_debug | FALSE |
cache_on | FALSE |
cachedir | '' |
char_set | utf8 |
dbcollat | utf8_general_ci |
swap_pre | '' |
autoinit | TRUE |
stricton | FALSE |