【发布时间】:2023-03-11 08:35:01
【问题描述】:
我有一个使用核心数据的可可应用程序。一切似乎都运行良好。
但是,在一个非常具体的场景中,该应用对我们的客户来说表现得非常奇怪。
特别是日志显示这在输出中多次出现(我在测试中从未见过):
Core Data: annotation: -executeRequest: encountered exception = Updating max pk failed: with userInfo = {
NSSQLiteErrorDomain = 14;
}
有没有人看过这条消息,你知道它的含义吗?我试过用谷歌搜索它,但除了一些关于 Growl 应用程序存在类似问题的留言板之外没有发现任何信息,目前还没有解决方案。
抱歉,我无法更具体地说明导致此问题的原因,因为我自己也不确定。我知道如何在客户端机器上重现此消息,但此消息似乎非常随机。
我希望有人能给我更多关于这个错误的确切含义的信息,以便我可以进一步缩小范围。现在我很无知。
注意:这出现在运行 10.7.2 的 macbook pro 上(如果重要的话)。
感谢您提供的任何帮助,即使是含糊不清的内容也会对我有所帮助。
更新:
托管上下文“保存”方法也失败并出现以下错误:
操作无法完成。 (可可错误 134030。)
【问题讨论】:
-
您的应用在非常具体的场景中做了什么?是否可重现?
-
它将一堆文件/目录 URL 添加到一个数组中,并将侦听器注册到这些文件夹。我发现当我添加太多文件和文件夹(例如 7000+)时,我会收到这些错误。我现在已经优化了应用程序以添加更少的目录来收听,并且我不再收到错误消息。我仍然不知道错误是什么意思。会不会是在核心数据中添加了太多东西?我知道“pk”是生成的原始 SQL 数据库中使用的前缀,但我不知道这是否相关。仍然是个谜。
-
Core Data 无法打开数据库文件,因为您已经用完了进程可用的所有文件描述符。
-
有趣,有道理。如果你能提供这个问题的答案,或者提供一些解决方法,我会很乐意接受。
-
我有同样的问题,但是当我检查我的文件描述符时,我只有 40 个!最大。这不允许我保存数据库。我在组织者日志中看到最大打开文件数达到了 78 个。但是我没有打开这么多的FD。你如何检查你的?