アプリが Mountain Lion (SQLite 3.7.12) で新しい Core Data ストアを作成するNSPersistentStoreInvalidTypeError
と、Tiger (SQLite 3.1.3) でファイルを開こうとすると、同じアプリでエラーが発生します。Tiger Mac でコマンド ライン ツールを実行しsqlite3
ても、データベースを開くときにエラーは発生しませんが、「.dump」コマンドを実行すると、SQLite がデータベースが空であると認識していることがわかります。
ただし、データベースが Tiger で作成された場合は、Mountain Lion で編集してから、Tiger で再度編集しても問題ありません。
新しく作成された永続ストアが後方互換性を持たないようにするために、Mountain Lion で何か変更がありましたか? または、それらが有効になるように有効にできる設定はありますか? 私の知る限り、3.1.3 にはなかった先行書き込みログなどの新しい SQLite 機能は使用していません。さらに、これは Lion で作成されたデータベースでは問題ではありませんでした。
更新: SQLite の変更履歴は、バージョン 3.7.10 でファイル形式が変更されたことを示しています。PRAGMA legacy_file_format=ONを設定できるはずです:
このフラグがオンの場合、新しい SQLite データベースは、3.0.0 までさかのぼる SQLite のすべてのバージョンで読み書き可能なファイル形式で作成されます。
これは、sqlite3
直接使用して機能します。ただし、NSSQLitePragmasOption
オプションを介して に設定するNSPersistentStoreCoordinator
と、無視されるようですsqlite3
。Tiger では、データベースが空であると再び認識されます。