Xcode - sqlite3.dylib: недопустимый многопоточный доступ к соединению с базой данных - PullRequest
0 голосов
/ 03 июля 2018

Я в тупике ..

Настройки: Xcode 9.4.1 (9F2000) Работает на: iOS Simulator iPhone 8 (11.4) sqlite3 config: sqlite3_config (SQLITE_CONFIG_SERIALIZED);

Проблема

1)"[logging] Ошибка в клиенте sqlite3.dylib: недопустимый многопоточный доступ к соединению с базой данных" ошибка в строке

if(sqlite3_prepare_v2(_contactDB, query_stmt, -1, &statment, NULL) == SQLITE_OK )
==> EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

Что я мог сделать, это изменить

if(sqlite3_open([[self filepath] UTF8String], &db)!= SQLITE_OK)

до

if (sqlite3_open_v2([[self filepath] UTF8String], &db, SQLITE_OPEN_READWRITE|SQLITE_OPEN_FULLMUTEX, NULL) != SQLITE_OK)

но это приводит меня ко второй проблеме

2) После того, как я выполню Симулятор -> Стереть все содержимое и настройки, при запуске приложения выдается ошибка «libc ++ abi.dylib: завершение с необработанным исключением типа NSException» в строке

class AppDelegate: UIResponder, UIApplicationDelegate, PKPushRegistryDelegate
==> signal SIGABRT

полный журнал

[logging] API call with invalid database connection pointer
[logging] misuse at line 123231 of [2b0954060f]
[logging] API called with NULL prepared statement
[logging] misuse at line 83511 of [2b0954060f]
SQL Error. Not able to add the record. SQL: INSERT INTO SERVER_LIST
(a, b, c, dh) VALUES ("1", "2", "3, "4")
[logging] API call with invalid database connection pointer
[logging] misuse at line 148673 of [2b0954060f]
[logging] API call with invalid database connection pointer
[logging] misuse at line 123231 of [2b0954060f]
*** Terminating appxdue to uncaught exception 'NSRangeException',
reason: '*** -[__NSArrayMobjectAtIndex:]: index 18446744073709551615
beyond bounds for empty array'

*** First throw call stack:
(
0   CoreFoundation                      0x000000010ce0d1e6 __exceptionPreprocess + 294
1   libobjc.A.dylib                     0x000000010c4aa031 objc_exception_throw + 48
2   CoreFoundation                      0x000000010ce4d0bc _CFThrowFormattedException + 194
3   CoreFoundation                      0x000000010cd3ce76 -[__NSArrayM objectAtIndex:] + 150
4   App                              0x0000000106a60570 _T06App7loginVCC13newaccountAddyyF + 1296
5   App                              0x0000000106a610e4 _T06App7loginVCC13newaccountAddyyFTo + 36
6   CoreFoundation                      0x000000010cda8b8c __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 12
7   CoreFoundation                      0x000000010cda8a65 _CFXRegistrationPost + 453
8   CoreFoundation                      0x000000010cda87a1 ___CFXNotificationPost_block_invoke + 225
9   CoreFoundation                      0x000000010cd6a422 -[_CFXNotificationRegistrar find:object:observer:enumerator:] + 1826
10  CoreFoundation                      0x000000010cd695a1 _CFXNotificationPost + 609
11  Foundation                          0x0000000109ccbe57 -[NSNotificationCenter postNotificationName:object:userInfo:] + 66
12  App                              0x000000010663fafb __41-[AppServer verification:url:records:]_block_invoke_2 + 2363
13  App                              0x00000001065dab94 __91-[AFHTTPSessionManager POST:parameters:constructingBodyWithBlock:progress:success:failure:]_block_invoke.106 + 228
14  App                              0x00000001065c3db9 __72-[AFURLSessionManagerTaskDelegate URLSession:task:didCompleteWithError:]_block_invoke_2.119 + 201
15  libdispatch.dylib                   0x000000010f2397ab _dispatch_call_block_and_release + 12
16  libdispatch.dylib                   0x000000010f23a7ec _dispatch_client_callout + 8
17  libdispatch.dylib                   0x000000010f245a3c _dispatch_main_queue_callback_4CF + 993
18  CoreFoundation                      0x000000010cdcfc99 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9
19  CoreFoundation                      0x000000010cd93ea6 __CFRunLoopRun + 2342
20  CoreFoundation                      0x000000010cd9330b CFRunLoopRunSpecific + 635
21  GraphicsServices                    0x0000000110dbda73 GSEventRunModal + 62
22  UIKit                               0x000000010a30f057 UIApplicationMain + 159
23  App                                 0x0000000106b64567 main + 55
24  libdyld.dylib                       0x000000010f2b7955 start + 1
25  ???                                 0x0000000000000001 0x0 + 1
)

Пожалуйста, помогите, ошибка приводит меня в круги ..

Спасибо!

1 Ответ

0 голосов
/ 05 июля 2018

Это решается путем изменения открытого кода на

if (sqlite3_open_v2([[self filepath] UTF8String], &db_sns, SQLITE_OPEN_READWRITE|SQLITE_OPEN_FULLMUTEX|SQLITE_OPEN_CREATE, NULL) != SQLITE_OK)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...