sqlite3 не может прочитать базу данных для меня, но не для того же коммита на другой машине - PullRequest
1 голос
/ 27 мая 2011

ФОН

У нас есть приложение для iPhone, которое использует sqlite для большой базы данных.Мы используем FTS3, полнотекстовый поиск, поэтому мы должны «свернуть наш» sqlite вместо использования библиотеки, включенной в iOS SDK.Мы используем объединенный файл sqlite.c и используем FMDB в качестве оболочки Obj-C.

ПРОБЛЕМА

Мой проект компилируется, но он падает наисключение, которое я установил, чтобы определить, не работает ли база данных (подробнее об этом чуть позже).Мой партнер, однако, весело кодирует, без проблем - на ТОЧНО ЖЕ коммит ревизии как я.Вот что странно.

В частности, приложение выполняет следующую загрузку при первой загрузке:

  1. Скопируйте базу данных в каталог документов пользователя, чтобы она была доступна для записи.(работает нормально)
  2. Откройте базу данных с помощью FMDB databaseWithPath:, затем open.
  3. Вызов goodConnection на FMDB в этот момент возвращает YES - база данных действительно открыта иработает.
  4. Вызов SELECT * FROM sqlite_master WHERE type = 'table' не возвращает записей.(должно быть много таблиц)

ЧТО Я ПРОБОВАЛ

Теперь, если вы попросите sqlite «открыть» базу данных, которая не существует- он просто создаст один.Вот как выглядит это поведение.Итак, я открыл окно терминала, перешел в каталог документов своего приложения на симуляторе и набрал:

Makbook:Documents makdad$ sqlite3 myDB.db

, который запускает sqlite3, и, конечно, все выглядит хорошо.Все мои данные там.

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

Первое, что я попробовал, было понижение до Xcode 3.2.6.Та же проблема, так что я думаю, что я исключил разницу в Xcode 3/4 при компиляции (хотя сначала я подозревал, что это так).

У кого-нибудь есть попытка отладки или знание того, чтомоя проблема может быть?

Ответы [ 2 ]

1 голос
/ 20 июня 2011

У нас была такая же проблема с нашим скомпилированным SQLite3.Я нашел решение этой проблемы в этом блоге http://regularrateandrhythm.com/regular-rate-rhythm-blog/sqlite3-fts-in-IOS4.html

0 голосов
/ 01 июня 2011

Проблема с симулятором iOS 4.3 SDK. Я забыл протестировать само устройство iOS, и оно работает.

Для поддержки старых версий iOS мы используем флаг компоновщика -weak_library /usr/lib/libSystem.B.dylib. Снятие этого флага в iOS Simulator 4.3 останавливает ВСЕ странное поведение, касающееся sqlite3.

Причина, по которой мои партнеры не сталкивались с проблемой, заключается в том, что они используют Xcode 3.2.5, то есть 4.2. Даже когда я перешел на Xcode 3, у меня все еще было установлено 4 - так что 3 тоже использовал 4.3 SDK.

Я собираюсь открыть новый вопрос о новой проблеме, так как этот вопрос так далек от фактической проблемы:)

...