11 October 2006

Movable Type の SQLite でのデータファイル

mt-config.cgi で、SQLite と MySQL の両方が使える状態でインストールすると、標準で SQLite が利用されるようだ。

mt-config.cgi

##### MYSQL #####
ObjectDriver DBI::mysql
Database mt
DBUser username
DBPassword mypassword
DBHost dbserver.mycompany.co.jp

##### SQLITE #####
ObjectDriver DBI::sqlite
Database ./db/mtdb

このように、どちらも利用できるように書いておくと、何の問い合わせも無く SQLite が使われていた。

www/mt/db ディレクトリに作成されているデータベースファイルを開いて構造を見てみる。

Shell Terminal での実行

%sqlite3 mtdb
SQLite version 3.3.6
Enter ".help" for instructions

sqlite> .databases
seq name file
--- --------------- ------------------------------------------------------
0 main /home/username/www/mt/db/mtdb

sqlite> .table
mt_author mt_entry mt_objecttag mt_tag
mt_blog mt_fileinfo mt_permission mt_tbping
mt_category mt_ipbanlist mt_placement mt_template
mt_comment mt_log mt_plugindata mt_templatemap
mt_config mt_notification mt_session mt_trackback

エントリー(記事)を管理しているテーブル構造を表示してみる


sqlite> .schema mt_entry
CREATE TABLE mt_entry (
entry_id integer not null primary key,
entry_allow_comments boolean,
entry_allow_pings boolean,
entry_atom_id varchar(255),
entry_author_id integer not null,
entry_basename varchar(255),
entry_blog_id integer not null,
entry_category_id integer,
entry_convert_breaks varchar(30),
entry_excerpt text,
entry_keywords text,
entry_pinged_urls text,
entry_status smallint not null,
entry_tangent_cache text,
entry_text text,
entry_text_more text,
entry_title varchar(255),
entry_to_ping_urls text,
entry_week_number integer,
entry_created_on datetime,
entry_created_by integer,
entry_modified_on timestamp not null,
entry_modified_by integer
);
CREATE INDEX mt_entry_author_id on mt_entry (entry_author_id);
CREATE INDEX mt_entry_basename on mt_entry (entry_basename);
CREATE INDEX mt_entry_blog_id on mt_entry (entry_blog_id);
CREATE INDEX mt_entry_created_on on mt_entry (entry_created_on);
CREATE INDEX mt_entry_modified_on on mt_entry (entry_modified_on);
CREATE INDEX mt_entry_status on mt_entry (entry_status);
CREATE INDEX mt_entry_week_number on mt_entry (entry_week_number);

その内容をダンプしてみる


sqlite> select * from mt_entry;
25|2|<small>
・・006/10/09(譛・ 18:17:16 ID:???0
繝サ繝輔Λ繝ウ繧ケ邏吶ヵ繧」繧ャ繝ュ縺ォ譌・譛ャ莠コ蝗」菴捺羅陦悟ョ「繧呈音蛻、縺吶

… 何が何やら、わかりませんな(EUCだから、画面ではさっぱり分からん)