将sms.db sql数据库从iOS 10合并/迁移到iOS 12

时间:2019-05-09 19:58:07

标签: ios database sqlite message

我有一个 sms.db ,其使用的iPhone 5可以追溯到2012年,直到最近才在iOS 6上使用。在强制升级到iOS10之后,我惊讶地发现sms数据库保持不变并可以通过新操作系统访问。现在,我需要将此数据库移至iOS 12。

首先,我只是移动了原始的 sms.db -它被标记为不兼容,如下所示:

  

.incompatible10113(iOS 10客户端版本)

字符串已添加到文件扩展名

通过在db属性中直接将 ClientVersion 字符串编辑为12005(这是我从原始的iOS 12 db中得到的)直接“修复了”(或者我认为是这样)。我还移动了附件,草稿和零件文件夹的设置权限。

操作系统现在接受数据库(例如,它不会被删除/重命名),但是似乎无法读取/使用它。我尝试将权限设置为0644、0750和0755,并且所有者设置为移动。

sms.db 文件保留在原位置,创建了 sms.db-shm 文件(标准33kb),但使用中的预写日志数据库 sms.db-wal 的值即使经过几次重新引导也保持为0字节。当收到新消息时,它将被写入,而Messages.app仅显示新消息。尝试搜索邮件显示了一些较旧的条目(可能缓存在/ Library / SMS以外的位置),此后消失了,并且从视图中擦除了新收到的邮件。

有人会知道iOS12中的 sms.db 是否有新的架构,如果可以的话,如何使旧的db兼容?或者,我将如何合并这两个sqlite数据库?谢谢

1 个答案:

答案 0 :(得分:0)

不确定其中有多少是偶然的,但我设法将其还原:

  • 复制了完整的iOS 10 SMS文件夹(包括wal / shm数据库文件)
  • 粘贴到iOS 12上新创建的SMS文件夹中-将旧SMS文件夹重命名为SMSold或更具创意的
  • 将文件夹的权限设置为与原始文件夹相同(移动/移动所有者; 644)
  • 对内部文件(尤其是db文件-sms.db及其附录)设置相同的权限
  • 重新启动并充满希望 不知何故,这行得通。 iOS似乎已经“升级”了iOS 10数据库本身(ClientVersion属性现在为12005),并且主数据库文件中有一些新表。