Digikams neues Datenbankformat und synchronisierte Bildbestände

Nach dem Update von digikam meldet sich das Programm und verlangt ein Datenbank-Update. Hintergrund ist, daß sich das zugrunde liegende Format der Datenbankdatei geändert hat (digikam3.db -> digikam4.db) und nun auch mehrere Alben unterstützt.

Um ein Album eindeutig wiedererkennen zu können, speichert sich digikam allerhand Information in der Tabelle "AlbumRoots" in der Spalte "identifier". Nach dem Update stand dort sowas in der Art drin: volumeid:?uuid=0aafe707-32e8-4258-adb5-38561c282490. In der Spalte specificPath stand der Pfad zu dem Album relativ vom Mountpoint der Partition.

Für einzelne USB-Festplatten mag es sinnvoll erscheinen, die UUID zu speichern, will man allerdings das Albumverzeichnis und die Datenbankdatei per Unison zwischen zwei Rechnern abgleichen, findet digikam auf dem anderen Rechner das Album nicht mehr, da sich die UUIDs unterscheiden. Bei einigen speziellen Konstellation wie virtuellen Maschinen oder LVM-Volume-Groups sind die UUIDs auch eher hinderlich. Auch ein Festplattentausch oder ein Verschieben der Daten führt zu einem Problem.

Die Lösung des Problems bietet der Entwickler Marcel Wiesweg in einer Antwort auf einen Bugreport an:

UPDATE AlbumRoots SET identifier='volumeid:?path=/somewhere/photo',
specificPath='/' WHERE id=1;

Damit zieht digikam ausschließlich den Pfad herein und die Daten werden auf beiden Rechnern gefunden (vorausgesetzt der Pfad dorthin ist natürlich gleich. Zu beachten ist noch, daß auf beiden Rechern die gleiche digikam-Version installiert sein sollte.

Das Album/Datenbank-Handling kann man auch im Code nachlesen unter libs/database. Vorallem die Datei collectionmanager.cpp ist interessant (dort nach identifier suchen).