第2回CodeIgniterの使い方「SQLiteの使い方」
2010.01.26 *Tue
えっと今日は、ネットにも本にもあんまり情報がない「SQLite」の使い方です。
まずは、データベースの設定
基本的には初期設定をコピペで['database']と['dbdriver']を変更すれば動きます。
ここでいちばん迷ったのは['database']の項目。
この項目にはファイルの保存先を指定するのですが
このファイルはいったい何処をルートとして考えているのか??
このファイルは自分で用意しなければならないのか??です。
実際プログラムを書いて調べてみた結果
ファイルはデータベースをロードしたときに作られて、ファイルのルートは
「index.php」があるところがルートディレクトリみたいです。
ほんとややこしい!!もちょっと、SQLite用のマニュアル用意して下さいよ運営さん^^;
次はテーブルの作成です。
ここで問題になるのはSQLite用のdbforgeクラスのバグっぽい物
SQLの文法にあまり詳しくないのですが、調べた結果どうも
add_fieldのauto_incrementがちゃんと動作してない様子です。
ソースをのぞいてみると、
となっていました。SQLite3ではこれでもいいみたいなのですが
CodeIgniterで使用するのはSQLite2なのでこの文法は使えません。
なのでdbforgeクラスを使う場合は「AUTO_INCREMENT」を「PRIMARY KEY」に変更して下さい。
ソースを書き換えるのが嫌な人SQLの文法に詳しい方は、クリエでそのまま実行した方がいいかもしれません。
あと説明では
$this->dbforge->add_field('id');
とすることで、主キーになると書いてありますがSQLiteはなりません。
以下のフィールドで作成することで主キーにすることが出来ます。
何かバグdbクラスはバグが多いみたいですねぇ^^;
早く次のバージョンでないかなぁ^^
P.S.
ちなみにこの記事に使ったのは2010年1月26日(火)現在の最新バージョン1.72です。
まずは、データベースの設定
$db['test']['hostname'] = "";
$db['test']['username'] = "";
$db['test']['password'] = "";
$db['test']['database'] = "temp.db";
$db['test']['dbdriver'] = "sqlite";
$db['test']['dbprefix'] = "";
$db['test']['pconnect'] = FALSE;
$db['test']['db_debug'] = TRUE;
$db['test']['cache_on'] = FALSE;
$db['test']['cachedir'] = "";
$db['test']['char_set'] = "utf8";
$db['test']['dbcollat'] = "utf8_general_ci";
基本的には初期設定をコピペで['database']と['dbdriver']を変更すれば動きます。
ここでいちばん迷ったのは['database']の項目。
この項目にはファイルの保存先を指定するのですが
このファイルはいったい何処をルートとして考えているのか??
このファイルは自分で用意しなければならないのか??です。
実際プログラムを書いて調べてみた結果
ファイルはデータベースをロードしたときに作られて、ファイルのルートは
「index.php」があるところがルートディレクトリみたいです。
ほんとややこしい!!もちょっと、SQLite用のマニュアル用意して下さいよ運営さん^^;
次はテーブルの作成です。
ここで問題になるのはSQLite用のdbforgeクラスのバグっぽい物
SQLの文法にあまり詳しくないのですが、調べた結果どうも
add_fieldのauto_incrementがちゃんと動作してない様子です。
ソースをのぞいてみると、
if (array_key_exists('AUTO_INCREMENT', $attributes) && $attributes['AUTO_INCREMENT'] === TRUE)
{
$sql .= ' AUTO_INCREMENT';
}
となっていました。SQLite3ではこれでもいいみたいなのですが
CodeIgniterで使用するのはSQLite2なのでこの文法は使えません。
なのでdbforgeクラスを使う場合は「AUTO_INCREMENT」を「PRIMARY KEY」に変更して下さい。
ソースを書き換えるのが嫌な人SQLの文法に詳しい方は、クリエでそのまま実行した方がいいかもしれません。
あと説明では
$this->dbforge->add_field('id');
とすることで、主キーになると書いてありますがSQLiteはなりません。
以下のフィールドで作成することで主キーにすることが出来ます。
$fields['id']['type'] = 'INTEGER';
$fields['id']['auto_increment'] = TRUE;
何かバグdbクラスはバグが多いみたいですねぇ^^;
早く次のバージョンでないかなぁ^^
P.S.
ちなみにこの記事に使ったのは2010年1月26日(火)現在の最新バージョン1.72です。
CATEGORY : 未分類
COMMENT
Comment Form
TRACKBACK
TrackBack List
| HOME |
