У меня есть проект, в котором я должен использовать несколько таблиц, чтобы избежать дублирования данных в моем файле sqlite (хотя я знал, что использование нескольких таблиц было кошмаром).
В моем приложении я читаю данные из одноготаблица в каком-то методе и вставка данных в другую таблицу в другом методе.Когда я делаю это, я получаю из функции шага sqlite код ошибки 21, который является неправильным использованием sqlite.
Согласно моим исследованиям, это связано с тем, что я не смог получить доступ к таблицам из многопоточности.
До сих пор я читал сайт sqlite и узнал, что есть 3 режима для настройки базы данных sqlite:
1) singlethread: у вас нет шансов вызвать несколько потоков.
2) многопоточность: да многопоточность;но есть некоторые препятствия.
3) сериализация: это лучшее соответствие многопоточным приложениям баз данных.
если sqlite3_threadsafe() == 2
возвращает значение true, тогда да, ваша база данных sqlite сериализована, и это вернуло значение true, поэтому я доказалэто для меня.
тогда у меня есть код для настройки моей базы данных sqlite для сериализации, чтобы взять его под гарантии.
sqlite3_config(SQLITE_CONFIG_SERIALIZED);
когда я использую вышеуказанные коды в классе, где я читаю и вставляю данныес 1 стола работает отлично :).Но если я пытаюсь использовать его в классе, где я читаю и вставляю данные из 2 таблиц (на самом деле, там, где мне это действительно нужно), возникает проблема неправильного использования sqlite.
Я проверил свой код, где я открываю и закрываю базу данных, тамс ними проблем нет.они работают, если я не удаляю другие.
Я использую ios5, и это действительно большая проблема для моего проекта.Я слышал, что Instagram использует Postgresql, может быть, это была причина, ха?Вы бы сначала предложили postgresql или sqlite?