Android Room数据库版本升级随笔
遇到一个问题是需要更新播放器缓存多条数据,结果机器ota升级播放后打开播放器失败了,出现runtime exception
看了原因是缓存数据是放在数据库中,以前只缓存一条数据,现在变成了N条,修改了数据库中一个键值,如果以前旧的软件有播放过视频就会缓存一条数据的数据库,而此时OTA升级上的播放器软件会使用新的数据库表,Room这边检查hash不过就会报错
E AndroidRuntime: java.lang.IllegalStateException:
Room cannot verify the data integrity.
Looks like you've changed schema but forgot to update the version number.
You can simply fix this by increasing the version number.
具体原因及修改可以看这个地方
【android】Room数据库版本升级,数据迁移详解 - JavaShuo
如果使用的Room版本更新的话其实可以使用自动的改法
Room 中的数据库自动迁移功能 - 腾讯云开发者社区-腾讯云
由这个问题引发的思考
1、针对数据的修改需要考虑前后版本的兼容,要增加对应的测试用例来发现问题
2、为什么code review 的时候没有考虑到第1点呢,第一个本身平时对数据库的使用比较少,所以没有考虑过这个会出问题,另外就是可以扩展阅读技术类文档,查漏补缺