10
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<< >>

スポンサーサイト

--.--.-- *--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

第2回CodeIgniterの使い方「SQLiteの使い方」

2010.01.26 *Tue
えっと今日は、ネットにも本にもあんまり情報がない「SQLite」の使い方です。

まずは、データベースの設定

$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 (1)  TRACKBACK (0) 

COMMENT

承認待ちコメント
このコメントは管理者の承認待ちです
2012/11/01(木) 06:41:39 | | # [Edit

Comment Form


秘密にする
 

TRACKBACK

TrackBack List

検索フォーム







QRコード

QRコード



Copyright © Suitable Blog All Rights Reserved.
テンプレート配布者:サリイ (素材:ふるるか) ・・・ 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。