房间迁移Alter Table不添加新列,迁移一次又一次地被调用

高塔姆

所以基本上我正在使用room并尝试添加从数据库版本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()执行操作,但不会在数据库中添加新列。我已经从应用程序目录中拉了我的数据库,并检查了多次,但是列不存在。除此之外,如果我终止我的应用程序并再次启动它,则该migrate方法会再次调用,不知道这是否是预期的功能,但它会破坏我的功能。我认为迁移将只被调用一次onUpgrade()

曼尼斯·库玛(Manish Kumar)

确保您的列在模型类中。对于您的情况,您要添加这样的列ageADD COLUMN 'age' INTEGER,因此您必须int age在模型类中。

同样,最好将迁移测试编写为确切知道失败的原因。您可以在以下Android文档中找到有关迁移测试的信息:https : //developer.android.com/topic/libraries/architecture/room.html#db-migration-testing

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我的 RecyclerView 一次又一次地从房间数据库中获取数据

如何一次又一次地调用URL

init方法在servlet中一次又一次地调用

房间迁移失败IllegalStateException

如何停止在 JavaScript 中一次又一次地调用相同的函数?

一次又一次地调用异步函数,直到 Node JS 中的预期结果

如何防止一次又一次地重新创建新的Fragment?

为什么数据在 Firebase 数据库的 Loop 中一次又一次地添加?

jQuery在突出显示的段落中,它一次又一次地添加相同的文本

CoreData将数据一次又一次地添加到数据库中

一次又一次地向多维数组添加“简单”数组元素

需要在Godaddy服务器上一次又一次地添加ssh

通知被一次又一次地触发

在 Fortran 95 中一次又一次地读取文件的内容

避免一次又一次地从JSON获取数据

Flutter:为什么setState((){})一次又一次地设置数据

更新状态一次又一次地获取数据后

Azure 容器实例一次又一次地失败

一次又一次地馈送avconv

内核一次又一次地死亡

一次又一次地编辑python脚本文件

无法一次又一次地在LinkedList中插入相同的元素

Square 一次又一次地改变速度

如何一次又一次地重复(递归)查询?

要重用jQuery函数,使函数一次又一次地使用

如何一次又一次地选择读/写?

是否必须一次又一次地定义地图?

Stripe Payment API 一次又一次地发送令牌请求

碎片一次又一次地消亡 Discordjs