ハマってたのでメモっておきます。

CentOS5環境で rails4 アプリの開発をしていて gem 'sqlite3' を使っていたところでエラーが出ました。
$ rake db:drop db:create db:migrate
rake aborted! An error has occurred, this and all later migrations canceled: SQLite3::SQLException: not an error: INSERT INTO "schema_migrations" ("version") VALUES (?) Tasks: TOP => db:migrate (See full trace by running task with --trace)
なんだコレは、とコードを追いかけていたりしていたのですが、やっと原因がわかったのでメモ。

http://rubygems.org/gems/sqlite3 を見たら、
Note that this module is only compatible with SQLite 3.6.16 or newer.   
との記載があったので、rpm -qa でバージョンを確認してみると、
$ rpm -qa | grep sqlite
sqlite-3.3.6-6 sqlite-devel-3.3.6-6

ΣΣ(゚д゚lll)ガガーン ! そりゃ動かないわけですね。あのコード追いかけていた時間は一体 orz

じゃあアップデートだ!と思ったんですが、CentOS-Base.repo から yum update しようとしても CentOS5 の場合 3.3.6-6 が最新なんですよね。もとい、rpm と yum が sqlite を使っている(依存している)らしく、下手にアップデートすると壊れるっぽい ^ ^;; ※ 実際壊してしまった方がいらっしゃった。こわいこわい CentOS 5系からrpmとyumを消してしまった話

こうなるとソースコードからビルドして別の場所に入れるしかないようですね。http://www.sqlite.org/download.html から tar ボールをダウンロードしてビルドします。
$ cd /usr/local/src
$ wget http://www.sqlite.org/2013/sqlite-autoconf-3071700.tar.gz
$ tar zxvf sqlite-autoconf-3071700.tar.gz
$ cd sqlite-autoconf-3071700
$ ./configure
$ make
$ sudo make install
これで /usr ではなく /usr/local に入ったので、次は sqlite3 をオプション付きでインストールします。もはや bundler が使えないのが悲しいですね ... 
$ gem install sqlite3 -- --with-sqlite3-include=/usr/local/include/sqlite3 \
--with-sqlite3-lib=/usr/local/lib
これで、再度 rake db:drop db:create db:migrate したら動きました!同じハマり方をした方がいたら是非試してみてください!

それでは!