answered
2014-04-20 18:36:01 +0200
I also ran into this error while sync'ing a formerly exchange-sync'd calendar with syncevolution. My wild guess is that even after manual cleanup of the calendar there are still some leftover entries in the db that hinder consistent synchronization.
In the following I lay out a very rude way to interact with the calendar db and you may break things easily!
You have been warned... :)
What helped me was to manually tinker with the sqlite calendar db which you can access as root via sqlite3 /home/nemo/.local/share/system/privileged/Calendar/mkcal/db
.
First, I deleted events not associated to a calendar and events associated to a non-existing calendar via the following sql statements:
delete from alarm where ComponentId in (select ComponentId from components where Notebook not in (select CalendarId from Calendars));
delete from attendee where ComponentId in (select ComponentId from components where Notebook not in (select CalendarId from Calendars));
delete from customproperties where ComponentId in (select ComponentId from components where Notebook not in (select CalendarId from Calendars));
delete from rdates where ComponentId in (select ComponentId from components where Notebook not in (select CalendarId from Calendars));
delete from recursive where ComponentId in (select ComponentId from components where Notebook not in (select CalendarId from Calendars));
delete from components where Notebook not in (select calendarid from calendars);
delete from components where Notebook = '';
Note: you may replace delete
with select *
to see if there are any entries.
Then, I cleaned the calendar in question via the following sql statements:
delete from alarm where ComponentId in (select ComponentId from components where Notebook in (select CalendarId from Calendars where Name = "$1"));
delete from attendee where ComponentId in (select ComponentId from components where Notebook in (select CalendarId from Calendars where Name = "$1"));
delete from customproperties where ComponentId in (select ComponentId from components where Notebook in (select CalendarId from Calendars where Name = "$1"));
delete from rdates where ComponentId in (select ComponentId from components where Notebook in (select CalendarId from Calendars where Name = "$1"));
delete from recursive where ComponentId in (select ComponentId from components where Notebook in (select CalendarId from Calendars where Name = "$1"));
delete from components where Notebook in (select CalendarId from Calendars where Name = "$1");
where you have to replace $1
with your calendar's name as listed by select Name from calendars;
. As above, you may replace delete
with select *
to see if there are any entries. Note: I assume that your calendars are distinctly named!
Finally, I sync'd with syncevolution first in slow mode and then in two-way mode without further problems.
you try to sync with calendar store default?
domnk ( 2014-04-20 13:38:47 +0200 )editand have entered three URL?
domnk ( 2014-04-20 13:39:38 +0200 )editYes, I try to sync with the default calendar. I am not sure what you mean with three URL. I have entered my URLs as explained in the HowTo.
FloR707 ( 2014-04-20 13:47:58 +0200 )editi mean url to cloud, url to contacts and url to calendar. you tried to delete and then recreate the account i think.
domnk ( 2014-04-20 17:21:03 +0200 )editI am quite sure that the URL to the OwnCloud calendar is correct since the log tells me that the sync was done successfully and in the log SyncEvolution displays I can see all the events that need to be updated. Somehow SyncEvolution has no write permissions for the calendar. Also the error log html SyncEvolution is mentioning does not exist on the device. Do I have to change some folder permissions?
FloR707 ( 2014-04-20 18:24:26 +0200 )edit