Android Room数据库版本升级随笔

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点呢,第一个本身平时对数据库的使用比较少,所以没有考虑过这个会出问题,另外就是可以扩展阅读技术类文档,查漏补缺

你可能感兴趣的:(Android Room数据库版本升级随笔)