Android Room自动迁移报错:未找到schema '1.json'及生成方法咨询
Android Room AutoMigration 缺失schema 1.json 解决方法
问题根源:你直接将数据库版本从初始状态设为2,跳过了版本1的编译流程,导致Room没有生成对应版本1的schema文件(1.json),而AutoMigration需要对比前后版本的schema才能生效。
解决步骤:
回退版本并生成1.json
- 修改
@Database注解:将version改为1,移除AutoMigration(from=1,to=2)配置 - 确保
User1Message实体保持版本1时的结构(也就是你原本想作为旧版本的实体状态) - 执行编译操作(Android Studio中点击
Build > Make Project),此时schemas/[你的数据库全类名]目录下会生成1.json
- 修改
恢复版本并配置AutoMigration
- 修改
@Database注解:将version改回2,重新添加AutoMigration(from=1,to=2) - 按需修改
User1Message的实体结构(比如新增字段、修改字段类型等,这也是你需要AutoMigration的原因) - 再次执行编译,Room会自动生成
2.json,并能找到1.json完成迁移规则的校验
- 修改
关键注意事项:
- 确保Gradle中
room.schemaLocation配置正确,kapt参数示例:android { defaultConfig { kapt { arguments { arg("room.schemaLocation", "$projectDir/schemas") } } } } - 不要手动修改或删除schema目录下的文件,所有schema必须由Room编译时自动生成,否则会导致迁移校验失败
- 如果之前误删过1.json,必须通过回退到版本1的实体结构重新编译生成,无法手动创建有效schema
内容的提问来源于stack exchange,提问作者GHH
相关产品推荐
相关产品推荐

