2016-08-12 10 views
0

私はAndroidアプリ用のフライウェイを実装しています。それは比較的スムーズに進みましたが、私はアプリの起動時間が大幅に増加していることに気付きました。私はわずかな増加が予想されましたが、500ms - 1sではありませんでした。Android用フライウェイはマイグレーションを全く行わないのに〜500msかかる

私はここで、不審なフライウェイ4.0.3

何を使用していますか?

SQLiteDatabase db = context.openOrCreateDatabase(DatabaseManager.DATABASE_NAME, 0, null); 
    ContextHolder.setContext(context); 

    flyway.setDataSource("jdbc:sqlite:" + db.getPath(), "", ""); 
    flyway.setBaselineOnMigrate(true); 
    flyway.setCallbacks(new MigrationFlywayCallback()); 
    try { 
     flyway.migrate(); 
    } catch (Exception e) { 
     sendMigrationFailedEvent(e); 
    } 

相対的なログ出力:

https://gist.github.com/jonschmidt/1fc61b45b1c0bf95baaa5d44f3c204c0


EDIT

問題はフライウェイは、それが移行するかどうかを確認するためにチェックする方法であると思われます。これは、メタデータテーブルは内部

https://github.com/flyway/flyway/blob/master/flyway-core/src/main/java/org/flywaydb/core/internal/metadatatable/MetaDataTableImpl.java#L68

version_rank列を持っているかどうかをチェックし、これは、ここにcolumnNamePatternはへ

https://github.com/SQLDroid/SQLDroid/blob/master/src/main/java/org/sqldroid/SQLDroidDatabaseMetaData.java

を列名を渡すことによって、列の存在を確認するためにSQLDroidを使用しています

これは決してその関数で使用されないので、常にtrueを返します。FlyWayは、アプリケーションを起動するたびにマイグレーションが必要と思って操作に数百msを追加します。

答えて

0

ログがフライウェイ4.0形式へ

アップグレードメタデータテーブル「メイン」。「schema_version」と言うように...

はフライウェイはフライウェイ3から一回限りの移行を行いました。 xをFlyway 4.xメタデータテーブル形式に変換します。

+0

私はそれを見ました。これは毎回成功したとしても、私がアプリケーションを起動するたびにこれを行うようです。バグか、設定に何か問題があると思われますか? –

+0

申し訳ありませんが、永続的ですが、私はあなたが中心的な貢献者であり、これについてより多くの洞察力を持っていると思います。この移行が毎回実行されると考えることができる理由はありますか?もし私がこれを解決できないのであれば、私たちはかなり恥ずかしがるかもしれないので、私は図書館の使用を止めなければなりません。 –

+0

"私はこの問題を解決できない場合、私たちのライブラリの使い方を落とす必要があります" - またはデバッガを開いて何が起きているかを調べることができます;-) –

関連する問題