PHP 5 で、Sqlite 3 を PDO を利用して操作しておりました。
*** in database main *** On tree page 2 cell 3: invalid page number 112 On tree page 2 cell 3: Child page depth differs On tree page 2 cell 4: Child page depth differs Error: database disk image is malformed
たかだかテーブル 1 つ(1000行インサートした程度)で、まだ 100kB のファイルサイズで、もう綻び!?? 無償だし、Lite (お気軽)だからって SQLite 脆弱すぎ、使えないなぁ...と憤慨。しかし、解せないのは途中で vacuum しても、データ処理の順番を変えても、いつも同じ内容データを処理しようとしたときに壊れてしまう。
データ内容が悪いのかな、UTF-8 のデータを扱っていて、sqlite は既定で UTF-8 を扱う設定だし(pragma encodingで確かめても UTF-8 と表示される)、文字列中にコントロールコードでも混じって壊れたのか?
原因は、PHP のほかのコードでエラーが発生して PHP スクリプトの動作が停止したので、SQLITE エンジンの処理も途中で強制終了してしまったためみたい。
つまり、SQLite のデータベースが壊れる原因は、データベース操作そのものではなくて(まったく別の個所で)、PHP のエラーの場合があるということです。
http://anond.hatelabo.jp/20131020004606 あれから数時間かけて、結局PHPエラーもないのにSQLITEの例のエラーが出てくる。 TRANSACTIONでくるんでもだめだわ。時間返せよ。 初めからぼろぼろに見せと...
http://anond.hatelabo.jp/20131020020435 根拠はないけど