iOS 5のリリースでは、sqliteデータベースのシリアル化されたオプションを設定する際にエラーが増えています(そのため、その保存をマルチスレッドに使用します)。私たちはsqlite3_configでSQLITE_MISUSEエラーコードを取得しています。誰かがこの奇妙な行動に気付いたのですか?そして、誰かが私がこれをどのように修正できるか知っていますか?これは、以前のiOSバージョンでも問題なく動作します。ここsqlite設定を設定するSQLITE_CONFIG_SERIALIZEDはiOS 5でSQLITE_MISUSEを返します
はコードです:
- (sqlite3 *)getNewDBConnection {
NSLog(@"sqlite3 lib version: %s", sqlite3_libversion());
//sqlite3_config() has to be called before any sqlite3_open calls.
if (sqlite3_threadsafe() > 0) {
int retCode = sqlite3_config(SQLITE_CONFIG_SERIALIZED);
if (retCode == SQLITE_OK) {
NSLog(@"Can now use sqlite on multiple threads, using the same connection");
} else {
NSLog(@"setting sqlite thread safe mode to serialized failed!!! return code: %d", retCode);
}
} else {
NSLog(@"Your SQLite database is not compiled to be threadsafe.");
}
sqlite3 *newDBconnection;
// Open the database
if (sqlite3_open([[self getDatabaseFilePath] UTF8String], &newDBconnection) == SQLITE_OK) {
NSLog(@"Database Successfully Opened :)");
} else {
sqlite3_close(newDBconnection);
NSLog(@"Error in opening database :(");
}
return newDBconnection;
}
、これが出力されます:
sqlite3 lib version: 3.7.7
setting sqlite thread safe mode to serialized failed!!! return code: 21
Database Successfully Opened :)
同じ問題が発生しました。sqlite3_config()の後にsqlite3_initialize()を呼び出しても問題は解決されません。 config()の呼び出しでもSQLITE_MISUSE(コード21)が返されます。誰でもこれを理解することができましたか? –