最近遇到一个问题,初次启动时需要将数据库拷贝到data/data/xxx/databases目录下,但是有一些机子出现了查该表时报错问题,追踪log后,还原了该问题。
当我们拷贝出现问题,没有拷贝成功,databases目录还不存在的时候,用户对该库进行了操作,那么系统会生成一个空的库文件(我们将库的oncreate方法注释掉了),不存在该表,所以出现了no suchTable错误。我们只需要将拷贝代码改成先判断库文件是否存在,不存在则拷贝,如果存在那么就查询该库的count是否为正确的数,或者是否存在异常,如果不对,我们将库文件删除掉,再重新进行拷贝。那么如果偶尔出现这个异常,退出重进就会修复数据库了。