2010年2月22日

【iPhone JB】SMSのメール件数がマイナス表示になってしまう件

iRealSMS 3.0 を入れたらメール件数が-1件になってしまった・・・
っと言う事で、sms.dbを手動で修復するメモです。

※個人的なメモなので同じことをして直る保証はありません。
 もしやるなら必ずsms.dbをバックアップしてからお願いします。
~ mobile$ sqlite3 /var/mobile/Library/SMS/sms.db
SQLite version 3.6.12
Enter ".help" for instructions

sqlite> .table
_SqliteDatabaseProperties irealsms_templates
blacklist message
drafts msg_group
group_member msg_pieces
irealsms_blacklist qsettings
irealsms_blacklisted settings
irealsms_drafts templates
irealsms_settings

sqlite> .schema msg_group
CREATE TABLE msg_group (ROWID INTEGER PRIMARY KEY AUTOINCREMENT, type INTEGER,
newest_message INTEGER, unread_count INTEGER, hash INTEGER);

sqlite> .explain ON
sqlite> select * from msg_group;
ROWI type newe unre hash
---- --------- ---- ---- --------
1 0 1 0 -1259482814
2 0 1455 0 -164862220
:
162 1 1221 0 -1184830177
166 1 1321 0 1371232404
186 1 1557 -1 -1182599457 ★
187 1 1448 0 1693984267
195 0 1641 0 -1003575882
206 0 1503 0 -2095692456


sqlite> update msg_group set unread_count=0 where ROWID=186;


■解説。

メールの未読数は、msg_groupテーブルのunread_countに保存されてます。
ここが-1などになってると、そのまま未読0件にする事が出来なくなってしまいます。

SMSは、sms.dbに保存されているので、ここへ直接アクセスして修正しているのが
上記になります。

もっと綺麗なやり方がありそうですが、SELECTでmsg_groupテーブルの中身を
全部表示させて、そこからunread_countがおかしいものを探して、修正(update)
という流れになります。

本当に、unread_countだけでいいの?とか細かい所は見て無いので、
もしかしたら不具合があるやもしれません・・・

0 件のコメント:

コメントを投稿