With the release of iOS 5 we are getting more and more errors when setting the serialized option for the sqlite database (so its save to be used for multithreading). We are
Is the sqlite3_config()
called before sqlite3_initialize()
? The function returns SQLITE_MISUSE
if called after sqlite3_initialize()
and before sqlite3_shutdown()
. See http://www.sqlite.org/c3ref/config.html for more details.
I struggled long and hard with this as well and finally got the solution.
As @enobufs said, sqlite3_config()
needs to be called before sqlite3_initialize()
. However, the OS might initialize SQLite for us so I also do a sqlite3_shutdown()
before the sqlite3_config()
.
sqlite3_shutdown()
sqlite3_config()
sqlite3_initialize()
.Then its also necessary to use the same connection for every query as it is the access to the database connection that gets serialized. As described here http://www.sqlite.org/capi3ref.html#sqliteconfigserialized
So I create a connection as soon as the app starts up and the pass that connection to every class that needs it.