我已经为我的Android应用程序实现了Flyway。虽然进展相对顺利,但我注意到应用程序的启动时间有了很大的增加。我预期会小幅增加,但不会增加500毫秒。
我正在使用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
编辑
问题似乎在于FlyWay检查是否应该迁移它的方式。它检查元数据表是否有列version_rank。
在内部,通过将列名传递到此处的SQLDroid,这将使用columnNamePattern来检查列的存在。
它从未用于该函数,因此它将始终返回true,FlyWay会认为每次启动应用程序时都需要迁移,为该操作添加几百ms。
发布于 2016-08-12 16:41:36
就像日志上说的
将元数据表"main"."schema_version“升级为Flyway 4.0格式
Flyway执行了从Flyway 3.x到Flyway 4.x元数据表格式的一次性迁移。
https://stackoverflow.com/questions/38919267
复制相似问题