android– 房间迁移更改表不添加新列和迁移一次又一次地调用

android– 房间迁移更改表不添加新列和迁移一次又一次地调用,第1张

概述所以基本上我正在使用空间并尝试添加从数据库版本1到2的迁移,但我的alter命令无效我目前的实施如下:voidinit(){db=Room.databaseBuilder(Global.getInstance(),AppDatabase.class,"feed").addMigrations(MIGRATION_1_2).build();}迁移属性:staticf

所以基本上我正在使用空间并尝试添加从数据库版本1到2的迁移,但我的alter命令无效
我目前的实施如下:

 voID init() {    db = Room.databaseBuilder(Global.getInstance(),            AppDatabase.class, "Feed").addMigrations(MIGRATION_1_2).build();}

迁移属性:

static final Migration MIGRATION_1_2 = new Migration(1,2) {    @OverrIDe    public voID migrate(SupportsqliteDatabase database) {        database.execsql("ALTER table 'post' ADD ColUMN 'age' INTEGER NOT NulL DEFAulT 0");        Log.d("VROM","Migration");    }};

数据库实施:

@Database(entitIEs = {Feed.class, DownloadModel.class}, version = 1) public abstract class AppDatabase extends RoomDatabase {public abstract DaoAccess getFeedDao();}

因此,在将版本从1递增到2之后,执行execsql()但在我的数据库中没有添加新列.
我从app目录中取出了我的数据库并多次检查但是列不在那里.除此之外,如果我杀了我的应用程序并再次启动它再次调用migrate方法,不知道这是否是预期的功能,但它打破了我的功能.我认为迁移只会被调用一次与onUpgrade()

解决方法:

确保您的列在模型类中.在您的情况下,您正在添加列年龄,如下所示:ADD ColUMN’age’INTEGER,因此您必须在模型类中使用int age.

此外,最好将迁移测试编写为确切知道失败的原因.你可以在这里找到关于androID文档中的迁移测试:https://developer.android.com/topic/libraries/architecture/room.html#db-migration-testing

总结

以上是内存溢出为你收集整理的android – 房间迁移更改表不添加新列和迁移一次又一次地调用全部内容,希望文章能够帮你解决android – 房间迁移更改表不添加新列和迁移一次又一次地调用所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存