Catalystを使ってみようとしたらSQLiteでハマる件
Catalyst::Manual::Tutorial とか見ながら Catalyst をいじっていたところ,
$ script/hoge_create.pl model CDBI CDBI dbi:SQLite:/hoge/hoge.db
とかやったあたりで、
DBD::SQLite::db prepare failed: unsupported file format(1) at dbdimp.c line 269 (以下略)
プギャー。
原因は,db 作るのに使った sqlite (最新)が
$ sqlite3 -version
3.3.4
Catalyst で使ってる DBD::SQLite (1.11; 最新のはず) の中身が,
$ perl -e 'use DBD::SQLite;print "$DBD::SQLite::sqlite_versionn";'
3.2.7
で,http://www.sqlite.org/ によれば,
2006-Jan-10 – Version 3.3.0 alpha
(中略)
The file format for version 3.3.0 has changed slightly in order provide a more efficient encoding of binary values. SQLite 3.3.0 will read and write legacy databases created with any prior version of SQLite 3. But databases created by version 3.3.0 will not be readable or writable by earlier versions of the SQLite. The older file format can be specified at compile-time for those rare cases where it is needed.
でまあ、逆なら読めるんだけど、今回の場合はダメ。
以上,Google 先生に訊いてもわからなかったので一応メモ。
SQLite 2 と 3 の非互換の話はよくあるんだけれども。
えーと,それで対応は,
1. sqlite3.2.x をインストール
2. DBD::SQLite の中身を 3.3.x に置き換える
3. 他のDBを使う
4. 寝る
とりあえず 4. で。