Failed to change locale for db '/data/data/xxxx/databases/ksdb' to 'zh_CN'.异常探究

最近游戏上线,然后Bugly发现一条奇怪日志:

Failed to change locale for db '/data/data/xxxx/databases/ksdb' to 'zh_CN'.异常探究_第1张图片
错误日志1

本身这条日志是比较奇怪的,因为首先可以看到下面的堆栈信息:

错误日志2

但是去用出问题的手机测试了一下db的size:

12-15 18:04:11.882: I/(13421): [info][]: db size:4398046507008

db里面无非存储一些账号,不可能会满掉,这样肯定是不可能的。


但是在日志里面可以看到:

错误日志3

这样可以看到,日志貌似在说,是因为切换语言设置造成,去查看了一下SQLiteConnection相关源码:


Failed to change locale for db '/data/data/xxxx/databases/ksdb' to 'zh_CN'.异常探究_第2张图片
源码解析

虽然不是很懂为什么会切换语言设置造成db错误,但是还是去爆栈查看了一下,确实有人遇到:

参考:

android sqlite : Failed to change locale for db to 'zh_CN'

android.database.sqlite.SQLiteException: Failed to change locale for db ‘/data/data/com.kaola/databases/webview.db’ to ‘zh_CN’.

Failed to change locale for db '/data/data/my.easymedi.controller/databases/EasyMediInfo.db' to 'en_US'

总体来说,还是有不少人遇到,但是都是部分手机会遇到这种情况,而且我即使拿到了Bugly记录的相同型号设备,安装了相同版本的游戏,也不会出现这样的问题。

不过网上解决方案基本大同小异,在打开db的时候,添加一个新的flag就可以解决因为切换Locale导致的db异常:

解决方案

关于这个属性的解释,大概意思就是不再受setLocale()的影响:

Failed to change locale for db '/data/data/xxxx/databases/ksdb' to 'zh_CN'.异常探究_第3张图片
解释flag

但是,目前这种方案并没有发到生产环境,因为毕竟连bug目前都还没有复现出来。

你可能感兴趣的:(Failed to change locale for db '/data/data/xxxx/databases/ksdb' to 'zh_CN'.异常探究)