Я хочу удалить таблицу в моем файле базы данных SQLite с именем database.db. После использования
NSLog(@"i show up in the console");
[db executeUpdate:@"DROP TABLE IF EXISTS `article`;"];
NSLog(@"i will not show up in the console");
приложение останавливается на позиции запроса. NSLog, прежде чем запрос отображается в консоли. NSlog сразу после запроса не отображается в окне консоли. Кроме того, временный файл с именем database.db-journal создается и постоянно удаляется в папке приложения симулятора во время работы приложения. Приложение НЕ вылетает, не выдает никаких ошибок и не продолжает ... Удаление «IF EXISTS» в запросе не работает, удаление обратных галочек не работает, удаление точки с запятой не работает.
Включение трассировки запроса только показывает, что FMDB обрабатывает мой запрос, больше ничего не отображается.
Я действительно запутался, почему это происходит. Я думал, что таблица должна быть пустой, прежде чем ее можно будет удалить, и поэтому я добавил запрос, чтобы удалить каждую запись в нем. Но id не имеет значения, приложение все еще попадает в дроп-запрос. У меня заканчиваются возможности устранить эту ошибку.
Если я выполняю команду drop в SQLite Database Browser 2, все работает нормально.
Дальнейшие исследования с отладчиком показали, что оболочка FMDB входит в бесконечный цикл, потому что возвращаемое значение оператора равно константе SQLITE_LOCKED, что означает, что таблица, которую я хочу удалить, заблокирована. Отправка «UNLOCK TABLES» в предыдущем запросе не решает эту проблему. Почему стол заблокирован? Почему удаление записей из заблокированной таблицы будет работать?