macos 照片应用打开失败1000错误问题解决
缘起
之前macos的照片库太大了,放在smb共享上,最近同步照片一直失败,即使修复照片库,更新到100%时报1000错误码或者直接就报1000错误码,各种尝试均无法解决问题,因此记录处理过程作为一个经验。
折腾过程
smb协议版本导致的问题
中途分析日志,发现类似下面的日志:
smb2_session_maxread: Limit min quantum size to maxmsgsize <65536>smb2_smb_parse_change_notify: smb_rq_reply failed 60
由于最近更新了网络结构,mac设置smb版本到版本1,每次照片打开时会进行更新,更新到94%就出错1000,修改为2版本就没事,但是局域网smb老是断开,一直不能成功,多次非常耗时的重试,仍然没有解决问题。
这里尝试了非常多次,由于每次都要重新更新,更新又很慢,也尝试回滚照片库到之前版本,非常耗时,最终也没成功。
对于照片库数据库损坏的猜想
由于照片库是个数据库加元数据,每次同步都失败,就怀疑是数据库损坏了,使用了历史版本的照片库文件,发现也是不行的。
看起来是设置了局域网openwrt nat导致smb老是断开,然后数据库挂了,后边重试多次不行,于是尝试移动databases文件夹后重新扫描反而恢复并且数据也没啥问题,可能有其他机制恢复了数据吧。
至此基本确定是数据库损坏导致。
对照片临时数据库锁文件的猜想
一次偶然的日志分析,发现了照片临时文件的报错,
/var/folders/xx/xxxx_dxxx_xxx_xxxxxx/T/com.apple.photolibraryd/sqliteplocks
经过回滚照片库验证,发现把这个文件夹删除后,重新打开照片库就正常了,因此最终确定是这个缓存错乱导致每次照片库都打不开。
总结
这个问题由于每次更新很慢,来回尝试了各种方法,查了各种资料,耗时比较久。最终也是靠现象分析问题,不断尝试最终找到问题的。
回头看这次的问题,应该是修改网络结构后,smb老是断开,导致数据库的这个临时缓存来回写混乱了,最终导致各种更新都打不开了。
发表评论