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中得到“Migration Ended”日志,但当我再次尝试access数据库时,它给我以下错误。
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=[]}
我完全不知道这个“整数”要到哪里去。我尝试了卸载,使缓存无效和任何其他密切相关的解决方案。知道这是怎么回事吗?如果你刚安装应用程序,它的工作非常好。只有在迁移后才会出现错误。根据我的日志猫,所有迁移步骤似乎都已完成,但仍然显示迁移没有正确处理。
谢谢大家的帮助,但是经过几天令人沮丧的调试,我终于找到了答案。在我的应用程序清单自动备份是打开的,
Android:allowBackup=“true”
所以在试用各种数据库的同时,谷歌实际上会备份我所有新创建的数据库及其结构,并在我重新安装应用程序时自动恢复它们。因此我得到了这个有线错误。一旦我切换自动备份android:allowbackup=“false”
并重新安装应用程序,我就可以正确地测试迁移。
下面是Kotlin中的类: 但当我试图运行应用程序时,它立即崩溃。以下是崩溃日志: 类似乎不是自动生成的。我检查了从codelab下载的原始java应用程序,发现是自动生成的。
我正在使用Maven和JPA编写一个项目(不是web应用程序!)。 我编写了带注释的实体类和CRUD服务类。但是现在,我需要使用而不是来执行这些CRUD操作。 我使用Hibernate作为JPA提供程序,并且在resources文件夹下的上配置了所有内容,目前运行正常。 我知道为了创建像 , 那么我必须在META-INF下使用,但我没有这个XML。 这是我的hibernate.cfg.xml
我试图通过新的android room库更新我的数据库,但它不起作用。这就是我的方法 主要活动。JAVA CarViewModel。JAVA 卡ao.java 我做了调试,新数据出现并调用viewModel。updateItems(list)方法。提前谢谢!
当我在Android上从旧的sqlite方式迁移到Room时,我需要使用“integer NOT null”来编译。问题是,当迁移发生时,您在新表中插入了带有“not NULL”参数的NULL字段,而我得到了错误 Android.database.sqlite.sqliteConstraintException:NOT NULL约束失败:note.notification_state(代码1299
我正在寻找从经典Akka持久化迁移到Akka持久化类型。在这里找到的Lagom留档:1说“注意:从Lagom持久化(经典)迁移到Akka持久化类型时的唯一限制是需要完全关闭集群。即使所有持久数据都是兼容的,Lagom持久化(经典)和Akka持久化类型也不能共存。” 有人知道这是否适用于服务器可能知道的所有持久实体吗?例如,我使用的服务有3个独立的持久实体。我需要一次迁移所有3个,还是可以一次迁移一
我正在使用android的房间持久性库,如果有人能帮助我使用外键,如何通过使用外键获取数据,我将不胜感激。