ownCloud: Kalender-Synchronisation mit Thunderbird/Lightning schlägt fehl

OwnCloud ist ja eigentlich eine tolle Sache. Mitunter häuft sich bei mir aber das Problem, dass der Kalender-Sync mit Thunderbird (bzw. Lightning) oder das Exportieren als *.ics fehlschlägt: Firefox meldet „Datei nicht gefunden“, Thunderbird meldet Fehler „CalDAV: Error: got status 500 fetching calendar data“.

Android und das ownCloud-Webinterface zeigen keine Probleme. Im Folgenden ein schneller Lösungsansatz:

Problemlösung

Fehlerursache ist ein defekter Kalendereintrag. Mit direktem Zugriff auf die MySQL-Datenbank lässt sich der Lümmel direkt identifizieren. Man wähle zuerst die betroffene Datenbank mit USE meine_datenbank und identifiziere dann den Übeltäter mit

SELECT * FROM oc_clndr_objects WHERE calendardata NOT LIKE '%END:VCALENDAR%';

Das Ergebnis sieht etwa wie folgt aus:

mysql> SELECT * FROM oc_clndr_objects WHERE calendardata NOT LIKE '%END:VCALENDAR%';
+-----+------------+------------+---------------------+---------------------+-----------+-------------+--------------------------------------------+----------------+--------------+
| id  | calendarid | objecttype | startdate           | enddate             | repeating | summary     | calendardata                               | uri            | lastmodified |
+-----+------------+------------+---------------------+---------------------+-----------+-------------+--------------------------------------------+----------------+--------------+
| 485 |          4 | VEVENT     | 2015-08-14 15:00:00 | 2015-08-14 15:30:00 |         0 | Mein Termin | BEGIN:VCALENDAR                            | 77b1ee9a-….ics |1436337089    |
|     |            |            |                     |                     |           |             | VERSION:2.0                                |                |              |
|     |            |            |                     |                     |           |             | PRODID:-//dmfs.org//mimedir.icalendar//EN  |                |              |
|     |            |            |                     |                     |           |             | BEGIN:VTIMEZONE                            |                |              |
|     |            |            |                     |                     |           |             | TZID:Europe/Berlin                         |                |              |
|     |            |            |                     |                     |           |             | X-LIC-LOCATION:Europe/Berlin               |                |              |
|     |            |            |                     |                     |           |             | BEGIN:DAYLIGHT                             |                |              |
|     |            |            |                     |                     |           |             | TZOFFSETFROM:+0100                         |                |              |
|     |            |            |                     |                     |           |             | TZOFFSETTO:+0200                           |                |              |
|     |            |            |                     |                     |           |             | TZNAME:CEST                                |                |              |
|     |            |            |                     |                     |           |             | DTSTART:19700329T020000                    |                |              |
|     |            |            |                     |                     |           |             | RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU     |                |              |
|     |            |            |                     |                     |           |             | END:DAYLIGHT                               |                |              |
|     |            |            |                     |                     |           |             | BEGIN:STANDARD                             |                |              |
|     |            |            |                     |                     |           |             | TZOFFSETFROM:+0200                         |                |              |
|     |            |            |                     |                     |           |             | TZOFFSETTO:+0100                           |                |              |
|     |            |            |                     |                     |           |             | TZNAME:CET                                 |                |              |
|     |            |            |                     |                     |           |             | DTSTART:19701025T030000                    |                |              |
|     |            |            |                     |                     |           |             | RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU    |                |              |
|     |            |            |                     |                     |           |             | END:STANDARD                               |                |              |
|     |            |            |                     |                     |           |             | END:VTIMEZONE                              |                |              |
|     |            |            |                     |                     |           |             | BEGIN:VEVENT                               |                |              |
|     |            |            |                     |                     |           |             | DTSTART;TZID=Europe/Berlin:20150814T170003 |                |              |
|     |            |            |                     |                     |           |             | SUMMARY:Mein Termin                        |                |              |
|     |            |            |                     |                     |           |             | LOCATION:                                  |                |              |
+-----+------------+------------+---------------------+---------------------+-----------+-------------+-------------------------------------------------------------+--------------+
1 row in set (0.01 sec)

Der einfachste Weg ist nun, die betroffenen Kalendereinträge zu löschen und ggf. neu anzulegen. Das Löschen geht einfach per:

DELETE FROM oc_clndr_objects WHERE calendardata NOT LIKE '%END:VCALENDAR%';

Was die eigentliche Ursache ist, kann ich leider nicht sagen — vielleicht ist die Android-App zur Synchronisation Schuld (ich benutze ĂĽbrigens CalDAV-Sync), aber so genau konnte ich den Bug noch nicht einkreisen.

Gemeldet ist er übrigens im Bugtracker schon mehrfach, dort habe ich auch obige Lösung Symptombekämpfung gefunden.