Основные данные: не удалось обновить max pk - PullRequest
0 голосов
/ 06 марта 2012

У меня есть приложение какао, которое использует основные данные.Кажется, все работает нормально.

Однако в очень специфическом сценарии приложение ведет себя очень странно для нашего клиента.

В частности, журналы показывают, что это появляется в выходных много раз (чего я никогда не видел в моемтестирование):

Core Data: annotation: -executeRequest: encountered exception = Updating max pk failed:  with userInfo = {
NSSQLiteErrorDomain = 14;
}

Кто-нибудь когда-нибудь видел это сообщение, и знаете ли вы, что оно означает?Я попытался найти его в Google, но не нашел никакой информации, кроме нескольких досок объявлений о том, что у приложения Growl есть похожие проблемы, но пока нет решения.

Извините, что не могу более конкретно определить причины этого, какЯ даже не уверен в себе.Я знаю, как воспроизвести это на компьютере клиента, но это сообщение кажется очень случайным.

Я надеялся, что кто-нибудь может дать мне больше информации о том, что именно означает эта ошибка, так что я, возможно, смогу сузить ее еще немного,Прямо сейчас я довольно невежественен.

Примечание: это появляется на MacBook Pro, работающем с 10.7.2 (если это имеет значение).

Спасибо за любую помощь, которую вы можете предоставить, даже что-тоВ этом случае мне может помочь vague.

Обновление:

Метод управляемого контекста "save" также не работает со следующей ошибкой:

Операция не может быть завершена.(Ошибка какао 134030.)

Ответы [ 2 ]

2 голосов
/ 09 марта 2012

Это на самом деле не проблема Core Data как таковая, а скорее проблема вашего процесса, заканчивающегося файловыми дескрипторами.

Каждый процесс имеет ограниченное количество файловых дескрипторов.Если у вас закончились, Core Data (и многие другие) перестанут работать, потому что они больше не смогут открывать файлы - все, что они не смогут.

Прежде всего, убедитесь, что вы не пропускаете файлдескрипторы, т.е. убедитесь, что вы закрываете файлы, когда они вам больше не нужны.

Я не уверен, какие изменения вы пытаетесь отследить.Взгляните на Отслеживание изменений файловой системы .

Если вы используете 10.7, взгляните на источники отправки и DISPATCH_SOURCE_TYPE_VNODE для очень мощного инструмента для отслеживания изменений файловой системы (соответствует kqueue, но проще в использовании).

0 голосов
/ 20 ноября 2013

Базовые данные также выдают эту ошибку в изолированном приложении, когда оно пытается сохранить БД в месте, к которому у него нет полного доступа на чтение / запись (если пользователь, например, открывает файл, Core Data сможет читать/ записать этот файл, но не что-либо еще в ту же папку).

Core Data не может записать временный файл _journal в эту папку и сообщает об этой ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...