android-Room Persistence Library:迁移期间出现奇怪错误

android-Room Persistence Library:迁移期间出现奇怪错误,第1张

概述我为这个错误而挠头.到目前为止,我找不到任何答案.我有旧数据库,正在迁移到PersistenceRoom库.但是,每当进行迁移时,都会出现以下错误,java.lang.IllegalStateException:Migrationdidn'tproperlyhandle.我使用的代码如下:@Entity(tableName=ROUTE_TABLE)publicclass

我为这个错误而挠头.到目前为止,我找不到任何答案.我有旧数据库,正在迁移到Persistence Room库.但是,每当进行迁移时,都会出现以下错误,

java.lang.IllegalStateException: Migration dIDn't properly handle. 

我使用的代码如下:

@Entity(tablename = ROUTE_table)public class RouteData {    static final String ROUTE_table = "name";    @PrimaryKey(autoGenerate = true)    @ColumnInfo(name = "ID")    private int ID;    @ColumnInfo(name = "col1")    private String col1;    //Other columns with exactly same as 'col1' just different names    //Getters and Setters}

对于迁移,

Room.databaseBuilder(context.getApplicationContext(), MyData.class, DATABASE_name)            .addMigrations(MIGRATION_LATEST)            .fallbackToDestructiveMigration()             .build();private static final Migration MIGRATION_LATEST = new Migration(9, 10) {    @OverrIDe    public voID migrate(SupportsqliteDatabase db) {        //Log.i("Tag" , "Migration Started");        //Migration logic        //Log.i("Tag" , "Migration Ended");    }};

当我运行程序时.我在LogCat中收到“迁移结束”日志,但是当我再次尝试访问数据库时,它给了我以下错误.

 Caused by: java.lang.IllegalStateException: Migration dIDn't properly handle xxx.                                                                              Expected:                                                                             tableInfo{name='name', columns={col1=Column{name='col1', type='TEXT', notNull=false, primaryKeyposition=0}, ....}, foreignKeys=[]}                                                                              Found:                                                                             tableInfo{name='name', columns={col1=Column{name='col1', type='INTEGER', notNull=false, primaryKeyposition=0}, ....}, foreignKeys=[]}

我不知道这个“ INTEGER”会在哪里.我尝试卸载,使缓存和任何其他紧密相关的解决方案无效.知道发生了什么吗?如果您是刚安装应用程序,它的效果会很好.仅在迁移后才会出现错误.根据我的日志,所有迁移步骤似乎都已完成,但仍显示迁移未正确处理.

解决方法:

谢谢大家为我提供的帮助,但是经过几天令人沮丧的调试,我终于找到了答案.在我的应用清单中,自动备份功能已开启,

androID:allowBackup=”true”

因此,在尝试各种数据库时,谷歌实际上是在备份我所有新创建的数据库及其结构,并在我重新安装应用程序时自动恢复它们.因此,我得到了这个有线错误.切换自动备份androID:allowBackup =“ false”并重新安装应用程序后,就可以正确测试迁移了.

我对所有将来遇到这种问题的开发人员的建议是,在开发时关闭自动备份.测试完迁移后即可将其打开.

总结

以上是内存溢出为你收集整理的android-Room Persistence Library:迁移期间出现奇怪错误全部内容,希望文章能够帮你解决android-Room Persistence Library:迁移期间出现奇怪错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1091853.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存