2017-06-14 21 views
1

私はすべてがOKに働い@tagsを経由してエンティティを作成する上で私の最初の走行では、私のDB用GreenDao 3.2.2GreenDao - アンドロイド - ONUPGRADE(暗号化されたデータベース)

を使用してい呼び出されていません。私は、テーブルにいくつかの小道具を追加したので

は、今私は、より高いバージョンにGradleのスキーマを編集しています:

greendao { 
    schemaVersion 4 
} 

一部の列ではないのでOpenHelper onUpgrade方法は、このように私のプロジェクトは常にクラッシュし、呼び出されることはありませんが見つかりました。

Applicationクラス

//Init DB 
     UpgradeHelper helper = new UpgradeHelper(this, ENCRYPTED ? "db-encrypted" : "db", null); 
     Database db = ENCRYPTED ? helper.getEncryptedWritableDb("app-cipher") : helper.getWritableDb(); 
     daoSession = new DaoMaster(db).newSession(); 

OpenHelperクラス

public class UpgradeHelper extends DaoMaster.OpenHelper { 

    public UpgradeHelper(Context context, String name, SQLiteDatabase.CursorFactory factory) { 
     super(context, name, factory); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

     //never gets called 
     Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion); 

     //do migrations 
    } 
} 

私は何かが足りないのですか?

+0

Databaseオブジェクトを受け取るためにすべての私の移行方法を更新するために必要なコースの

public void onUpgrade(Database db, int oldVersion, int newVersion) { Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by migrating all tables data"); //do migration } 

あなたを行います作成したDBにアクセスできますか?あなたはSQLiteStudioでそれを開くことができますか? – MatPag

+0

@MatPagはい私は – htafoya

+0

@MatPag PRAGMA user_versionコマンドはgradleとDaoMasterで定義された正しいSCHEMA_VERSIONを与えています:(ただし、私のテーブルは最新のスキームに更新されていません – htafoya

答えて

2

GreenDAOコードを検索して読んでから、私はその問題を理解しました。

getEncryptedWritableDbは、SQLiteDatabaseを拡張しない別の種類のDBを作成するという問題があります。したがって、EncryptedHelperonUpgradeメソッドを取得しても、私のヘルパークラスは別のシグネチャに分類されたため、そのクラスをキャッチしませんでした。

ソリューションは、単にDAO Databaseインタフェースを受け、他の署名使っていた:私は代わりにStandardDatabase

+0

) – MatPag

関連する問題