|
По непонятным причинам падает БД
|
|||
---|---|---|---|
#18+
Всех приветствую! В общем, на Андройде накрывается БД (sqlite3) с смс. В чем дело непонятно. Вот кусочек лога, отражающий проблемы с БД: logcat07-04 08:41:59.312 I/SqliteDatabaseCpp(1431): sqlite returned: error code = 11, msg = database corruption at line 62719 of [8609a15dfa] 07-04 08:41:59.312 I/SqliteDatabaseCpp(1431): sqlite returned: error code = 11, msg = statement aborts at 81: [SELECT thread_id as _id,sms.date as date,threads.recipient_address as recipient_address,sms.body as body,'sms' as msgtype,threads.name as suggest_text_1,sms.body as suggest_text_2, threads._id as suggest_intent_data_id, sms._id as suggest_intent_extra_data, 'content://РЅ/sms' as suggest_intent_data, sms.type as msgbox FROM sms,threads WHERE (address NOTNULL AND (sms.body LIKE ? OR sms.address LIKE ? OR threads.name LIKE ? OR (thread_id in (select thread_id from name_lookup where normalized_name like ?))) AND (thread_id=threads._id)) AND ( htc_category = 0) UNION SELECT thread_id as _id,pdu.date as date,threads.recipient_address as recipient_address,part.text as body,'mms' as msgtype,threads.name as suggest_text_1,part.text as suggest_text_2, threads._id as suggest_intent_data_id, pdu._id as suggest_intent_extra_data, 'content://РЅ/mms' as suggest_intent_data, pdu.msg_box as msgbox FROM pdu,part,addr,threads WHERE ((part.mid=pdu._id) AND (addr.m 07-04 08:41:59.322 E/DefaultDatabaseErrorHandler(1431): Corruption reported by sqlite on database: /data/data/com.android.providers.telephony/databases/mmssms.db 07-04 08:41:59.332 D/SqliteDatabaseCpp(1431): DB info: close db, path = /data/data/com.android.providers.telephony/databases , key = mmwwmw, handle = 0x1e8a6d0, type = w, r/w = (0, 0) 07-04 08:41:59.332 E/DefaultDatabaseErrorHandler(1431): deleting the database file : /data/data/com.android.providers.telephony/databases/mmssms.db 07-04 08:41:59.342 E/DatabaseUtils(1431): Writing exception to parcel 07-04 08:41:59.342 E/DatabaseUtils(1431): android.database.sqlite.SQLiteDatabaseCorruptException: database disk image is malformed 07-04 08:41:59.342 E/DatabaseUtils(1431): at android.database.sqlite.SQLiteQuery.nativeFillWindow(Native Method) 07-04 08:41:59.342 E/DatabaseUtils(1431): at android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java) 07-04 08:41:59.342 E/DatabaseUtils(1431): at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java) 07-04 08:41:59.342 E/DatabaseUtils(1431): at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java) 07-04 08:41:59.342 E/DatabaseUtils(1431): at android.database.CursorToBulkCursorAdaptor.count(CursorToBulkCursorAdaptor.java) 07-04 08:41:59.342 E/DatabaseUtils(1431): at android.content.ContentProviderNative.onTransact(ContentProviderNative.java) 07-04 08:41:59.342 E/DatabaseUtils(1431): at android.os.Binder.execTransact(Binder.java) 07-04 08:41:59.342 E/DatabaseUtils(1431): at dalvik.system.NativeStart.run(Native Method) 07-04 08:41:59.342 E/SqliteWrapper(19789): Catch a SQLiteException when query: 07-04 08:41:59.342 E/SqliteWrapper(19789): android.database.sqlite.SQLiteDatabaseCorruptException: database disk image is malformed 07-04 08:41:59.342 E/SqliteWrapper(19789): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java) 07-04 08:41:59.342 E/SqliteWrapper(19789): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java) 07-04 08:41:59.342 E/SqliteWrapper(19789): at android.content.ContentProviderProxy.query(ContentProviderNative.java) 07-04 08:41:59.342 E/SqliteWrapper(19789): at android.content.ContentResolver.query(ContentResolver.java) 07-04 08:41:59.342 E/SqliteWrapper(19789): at com.google.android.mms.util.SqliteWrapper.query(SqliteWrapper.java) 07-04 08:41:59.342 E/SqliteWrapper(19789): at com.android.mms.util.MmsAsyncQueryHandler$MmsWorkerHandler.handleMessage(MmsAsyncQueryHandler.java) 07-04 08:41:59.342 E/SqliteWrapper(19789): at android.os.Handler.dispatchMessage(Handler.java) 07-04 08:41:59.342 E/SqliteWrapper(19789): at android.os.Looper.loop(Looper.java) 07-04 08:41:59.342 E/SqliteWrapper(19789): at android.os.HandlerThread.run(HandlerThread.java) 07-04 08:41:59.342 D/MessageSearch(19789): onQueryComplete cursor null> 07-04 08:41:59.342 D/SqliteDatabaseCpp(1431): DB info: open db, path = /data/data/com.android.providers.telephony/databases , key = mmwwmw, flag = 6, cannot stat file, errno = 2, message = No such file or directory 07-04 08:41:59.342 D/SqliteDatabaseCpp(1431): DB info: path = /data/data/com.android.providers.telephony/databases , key = mmwwmw, handle: 0x25a3ce0, type: w, r/w: (0,1), mode: truncate, disk free size: 983 M Согласно логу, БД считается поврежденной и провайдер ее удаляет, после чего делает переиницилизацию БД, создавая чистую... Потом я опять восстанавливаю файл БД, проходит день-два и повторяется точно такая же история ( sqlite returned: error code = 11, msg = database corruption at line 62719 of [8609a15dfa]). Я заюзал PRAGMA integrity_check для проверки целостности БД, но эта штука возвратила мне ' ok ', что вроде как означает, что БД в порядке... Люди добрые, подскажите, пожалуйста, как быть, что еще можно сделать?.. Как можно узнать, что на строке 62719 находится? Очень надеюсь на вашу помощь. Спасибо!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2014, 19:07 |
|
По непонятным причинам падает БД
|
|||
---|---|---|---|
#18+
Corruption, 1. Повесь обработчик static void gf_trace_callback(void* p_udp, const char* p_sql) { залогиурй тут все p_sql } sqlite3_trace(db, gf_trace_callback, NULL); 2. Покажи какие прагмы идут в лог при старте базы ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2014, 08:18 |
|
|
start [/forum/topic.php?fid=54&fpage=12&tid=2008775]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
others: | 267ms |
total: | 394ms |
0 / 0 |