CakePHPでSqlite3を使う

標準のPHP5で対応しているSqliteのバージョンは2のため、単純にdatabases.incにsqliteと書くとバージョン2で使われる。
バージョン3は、PDOを使ってアクセスするのだけど、標準のCakePHPでは読み込めないので、調べてみた。

以下を参考に
CakePHP1.3.2でSQLite3を使う(改訂版) | 1000g
CakePHP 1.3.2 インストールしてSQLite3使える様にするまでのメモ | かなりすごいブログ

手順は、こんな感じ。今回はsqlite3以外は要らないので、それだけ使う
+ GitHub から「dbo_sqlite3.php」をダウンロードする
+ ダウンロードしたファイルを「app/models/datasources/dbo」内にコピーする
+ databases.phpで呼び出すときに「’driver’ => ‘sqlite3’」と指定する

本当はplugins毎コピーすると使えるようになるらしいのだけど上手く動かなかったので、苦し紛れにdbo_sqlite3.phpだけをapp/modelsの下に展開したが、なんで見つからないんだろう、CakePHP1.2だからか?。
ちなみにこんなエラーが出る

Fatal Error (256): Unable to load DataSource file dbo/dbo_Datasources.DboSqlite3.php [CORE/cake/libs/model/connection_manager.php, line 179]
<<

Sqliteでテーブル一覧と定義を取得する

テーブルの情報を取得する

select tbl_name, sql from sqlite_master  where type = 'table';

MysqlでのShow Tableのようにテーブルの一覧を取得する

select tbl_name from sqlite_master where type = 'table';

もしくは

.tables TABLENAME

MysqlでのDESCのようにテーブルの定義を取得する

select sql from sqlite_master where type = 'table';

もしくは

.schema TABLENAME

Sqliteの備考

読み込もうとしたらエラーが出る

sqliteのバージョンが合ってないのが原因。以下のエラーの場合、sqlite3のデータをsqlite2で開こうとしている

file is encrypted or is not a database sqlite