Lightning Calendar data missing
I wanted to retrieve some deleted e-mails from a MozBackup file I made about a year ago. First I backed up my Thunderbird (52.2.1) files using MozBackup 1.5.2 beta 1, then I used MozBackup to load the backup file with the deleted e-mails. When it finished, all I had was one empty e-mail account (instead of three) and the e-mails that I had imported from Microsoft Outlook when I switched to Thunderbird. My calendar was also empty.
Then I tried reloading the backup that I had just made, with the same results. I was able to recreate the missing e-mail accounts and change the server address to point to the folders, so at least I have my e-mail back. The Calendar tab displays but the calendar is empty.
The only calendar shown is "Home". When I look at it's properties, under location I see: moz-storage-calendar://
My Thunderbird profile folder contains a sub-folder named "calendar-data", which contains "local.sqlite", 1Mb in size, last modified yesterday (when my troubles began). I'm guessing that's where my calendar data is. How do I hook it back up? The only thing I could find about the calendar location was the warning to not edit it "unless you know what you're doing" and no further information. [Thanks, buddy, VERY helpful -- NOT].
running Thunderbird 52.2.1 (32-bit) on Windows 10 Lightning 5.4.2.1
Thanks in advance for your help.
วิธีแก้ปัญหาที่เลือก
Tonnes,
Thanks so very much for the help! You obviously spent a fair amount of time on this and I REALLY appreciate it.
The answer was in the mozillaZine link that you provided:
Hi, you need to tell Lightning what calendars exists in the local.sqlite file. The corresponding preferences are stored like all preferences in file pref.js in your profile folder and start with "calendar.registry". ...
I shutdown Thunderbird, found prefs.js in the top level of the Thunderbird profile folder and made a copy of it, just in case. Looking in prefs.js I found multiple entries that start with user_pref("calendar. and contained the cal_id value that I found in the two new events in the bottom of the cal_events table in calendar-data/local.sqlite. (These are the two new events that I added to the otherwise empty calendar that appeared after I recreated my Thunderbird accounts, etc., to recover my e-mail.)
So I opened prefs.js using Windows 10 notepad, did a global search on the "new" cal_id value and replaced it with the "old" cal_id value (the one shared by all my missing calendar data records).
I saved prefs.js, restarted Thunderbird and viola, my calendar was back.
Thanks again!
อ่านคำตอบนี้ในบริบท 👍 1การตอบกลับทั้งหมด (3)
More information:
This has nothing to do with the location of the calendar. My missing calendar data is stored in calendar-data/local.sqlite and that's apparently the file that's being used by Lightning to store new events, etc.
I used the SQLite online viewer (http://inloop.github.io/sqlite-viewer/ ) to view local.sqlite. It contains my missing event data, etc.. When I add a new event to the calendar, it gets appended to the "cal_events" table in the file. But new events have a different value in the "cal_id" field of the table than the missing events. All my missing events have the same cal_id value. New events get a different cal_id value, which is the same for each new event in the new calendar.
I created a second calendar and added two new events. They got appended to the same file, but with a different cal_id value. So apparently cal_id identifies the calendar that the events belong to. OK.
So how do I get Lightning to display the original calendar and events that are stored in the file?
Thanks!
(Some of this may be obsolete info due to your last post.)
I’m afraid all this could have happened because MozBackup is no longer supported. That means it may not have caught up with recent file and folder structure changes, even if it is 1.5.2 beta 1 that I hoped would have fixed some of the issues. Chances are either the calendar data is not included in the backup, or it does not get restored properly.
The local.sqlite file should contain the calendar data allright. Additionally you need preference entries in prefs.js starting with calendar.registry.xxx.... If these are missing (such as in a new profile), the calendar entries are unknown to TB and not visible. Likewise, the prefs.js file could be fine in your backup, but the files may not have been copied or restored. The Lightning add-on itself is now included in the TB install folder in latest TB versions and is no longer an add-on inside the profile like other ones, but I don’t think that’s related.
FWIW, I noticed local.sqlite to be around 750 kB for a "default file" that you may have found too, while my regular file containing 2 calendars is around 70 kB, hence even smaller. If I copy the calendar-data folder content to a fresh profile AND the older pref.js file, the calendars appear.
Try to rename (a copy of) the recent backup to .zip and see if it contains the calendar-data folder, then restore it manually or compare them. Also check and compare the entries in prefs.js.
I just tested with 1.5.2 beta 1 and amazingly it does back up the folder for me. What it does not copy, is compatibility.ini, compreg.dat, pluginreg.dat and xpti.dat, but I don’t think they are required. See here for more info on files in the profile. I have not tried to restore it to see what happens.
In any case, make sure to do a manual copy (and restore) of your profile folder for backups in the future.
Also this question and this question may be of help, as well as this thread at mozillaZine.
วิธีแก้ปัญหาที่เลือก
Tonnes,
Thanks so very much for the help! You obviously spent a fair amount of time on this and I REALLY appreciate it.
The answer was in the mozillaZine link that you provided:
Hi, you need to tell Lightning what calendars exists in the local.sqlite file. The corresponding preferences are stored like all preferences in file pref.js in your profile folder and start with "calendar.registry". ...
I shutdown Thunderbird, found prefs.js in the top level of the Thunderbird profile folder and made a copy of it, just in case. Looking in prefs.js I found multiple entries that start with user_pref("calendar. and contained the cal_id value that I found in the two new events in the bottom of the cal_events table in calendar-data/local.sqlite. (These are the two new events that I added to the otherwise empty calendar that appeared after I recreated my Thunderbird accounts, etc., to recover my e-mail.)
So I opened prefs.js using Windows 10 notepad, did a global search on the "new" cal_id value and replaced it with the "old" cal_id value (the one shared by all my missing calendar data records).
I saved prefs.js, restarted Thunderbird and viola, my calendar was back.
Thanks again!