Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 核心数据:更新最大pk失败_Cocoa_Exception_Core Data - Fatal编程技术网

Cocoa 核心数据:更新最大pk失败

Cocoa 核心数据:更新最大pk失败,cocoa,exception,core-data,Cocoa,Exception,Core Data,我有一个使用核心数据的cocoa应用程序。一切似乎都很顺利 然而,在一个非常特定的场景中,该应用程序对我们的客户来说表现得非常奇怪 特别是日志多次在输出中显示这一点(我在测试中从未见过): 有人看过这条信息吗?你知道它的意思吗?我试着在谷歌上搜索,但除了一些留言板外,没有发现关于咆哮应用程序有类似问题的信息,目前还没有可用的解决方案 很抱歉,我不能更具体地说明是什么原因造成的,因为我自己都不确定。我知道如何在客户端的机器上复制此消息,但此消息似乎非常随机 我希望有人能给我更多关于这个错误到底意味

我有一个使用核心数据的cocoa应用程序。一切似乎都很顺利

然而,在一个非常特定的场景中,该应用程序对我们的客户来说表现得非常奇怪

特别是日志多次在输出中显示这一点(我在测试中从未见过):

有人看过这条信息吗?你知道它的意思吗?我试着在谷歌上搜索,但除了一些留言板外,没有发现关于咆哮应用程序有类似问题的信息,目前还没有可用的解决方案

很抱歉,我不能更具体地说明是什么原因造成的,因为我自己都不确定。我知道如何在客户端的机器上复制此消息,但此消息似乎非常随机

我希望有人能给我更多关于这个错误到底意味着什么的信息,这样我就可以缩小它的范围。现在我很无知

注意:这出现在运行10.7.2的macbook pro上(如果有必要的话)

谢谢你能提供的任何帮助,即使是一些模糊的东西在这一点上也会对我有所帮助

更新:

托管上下文“save”方法也会失败,并出现以下错误:

无法完成该操作。(可可错误134030。)


这实际上并不是一个核心数据问题,而是一个文件描述符不足的问题

每个进程都有数量有限的文件描述符。如果用完了,核心数据(以及其他许多东西)将停止工作,因为它们无法再打开文件——任何文件都会失败

首先,确保没有泄漏文件描述符,即确保在不再需要文件时关闭文件

我不确定你想跟踪什么样的变化。看一看


如果您使用的是10.7,请查看调度源和
dispatch\u SOURCE\u TYPE\u VNODE
,了解跟踪文件系统更改的强大工具(对应于
kqueue
,但更易于使用).

Core Data在沙盒应用程序中尝试将DB保存到没有完全读/写权限的位置时,也会出现此错误(例如,如果用户打开文件,Core Data将能够读/写此文件,但不能将任何其他内容写入同一文件夹)


Core Data无法将临时日志写入此文件夹并报告此错误。

您的应用程序在您的特定场景中做了什么?是可复制的吗?它将一组文件/目录URL添加到一个数组中,并将侦听器注册到这些文件夹中。我发现当我添加了太多的文件和文件夹(如7000+时),就会出现这些错误。我现在已经优化了应用程序,添加了更少的目录来收听,我不再收到错误。我还是不知道这个错误是什么意思。是否会有太多的东西添加到核心数据中?我知道“pk”是在生成的原始SQL db中使用的前缀,但我不知道这是否相关。仍然是个谜。核心数据无法打开数据库文件,因为您已经用完了进程可用的所有文件描述符。有趣的是,这是有道理的。如果你能给出这个问题的答案,或者提供一些解决办法,我会很乐意接受。我也有同样的问题,但当我检查我的文件描述符时,我只有40个!最大限度这不允许我保存数据库。我在Organizer日志中看到,已达到78个最大打开文件。但是我没有开那么多的FD。如何检查您的?我在保存到coredata时出现此错误,。。如何解决这个问题。。请帮助我,…您需要对保存位置具有完全读/写访问权限。最好的选择是创建一个文件夹/捆绑包并将您的CoreData文件存储在那里。
Core Data: annotation: -executeRequest: encountered exception = Updating max pk failed:  with userInfo = {
NSSQLiteErrorDomain = 14;
}