2016-09-24 6 views
4

Ich habe! ein Jahrzehnt im Wert von getaggten Fotos, die mit Digikam und meinem Debian-Stable/Testing-Mix verwaltet wurden, wurde kürzlich auf Digikam 5 umgestellt.(mysql) Datenbank Migration Schwierigkeit bei der Migration von Digikam 4. * zu 5. *

Ich bin jetzt mit dem Problem konfrontiert, dass die (MySQL) Datenbank, die diese Arbeit der Liebe hält, Probleme gibt, wenn sie versuchen, auf das neuere Datenbankschema (V.8) zu aktualisieren. .

Wenn digikam v5 Start * deutete auf den 4 * - verwendet Datenbank-Backend ich folgendes:.

digikam.dbengine: Loading SQL code from config file "/usr/share/digikam/database/dbconfig.xml" 
digikam.dbengine: Checking XML version ID => expected: 3 found: 3 
digikam.coredb: Core database: running schema update 
digikam.coredb: Core database: have a structure version 7 
digikam.coredb: Core database: makeUpdates 7 to 8 
digikam.dbengine: Failure executing query: 
"" 
Error messages: "QMYSQL: Unable to execute query" "Can't DROP 'Albums_AlbumRoots'; check that column/key exists" 1091 2 
Bound values: () 
digikam.dbengine: Error while executing DBAction [ "UpdateSchemaFromV7ToV8" ] Statement [ "ALTER TABLE Albums\n          DROP FOREIGN KEY Albums_AlbumRoots;" ] 
digikam.coredb: Core database: schema update to V 8 failed! 
digikam.coredb: Core database: cannot process schema initialization 

Wenn explizit am Ende zu verwenden versuchen, die db-Migrations-Tool enthalten in 5 * I mit der Fehler in dem folgenden Bild dargestellt: enter image description here

Kann mir jemand helfen mit Entschlüsselungs, was hier vor sich geht, bzw. wie man es beheben?

Joh

Antwort

4

Ich hatte das gleiche Problem aufgrund einiger Unstimmigkeiten in meinem alten db. Nachdem diese behoben waren (hauptsächlich einige tote Referenzen löschend), wurde ein Upgrade durchgeführt. Ich habe immer noch ein anderes Problem, aber wahrscheinlich nicht im Zusammenhang mit der db.

Dies wird zeigen, Ihre Probleme (sollten alle außer dem Root-Tag leer sein):

genommen von https://bugs.kde.org/show_bug.cgi?id=355831#c73

select * from Images where album not in (select Albums.id from Albums); 
select id, icon from Albums where icon != 0 and icon not in (select id from Images); 
select * from Albums where Albums.albumRoot not in (select AlbumRoots.id from AlbumRoots); 
select * from ImageHaarMatrix where imageid not in (select id from Images); 
select * from ImageInformation where imageid not in (select id from Images); 
select * from ImageMetadata where imageid not in (select id from Images); 
select * from VideoMetadata where imageid not in (select id from Images); 
select * from ImagePositions where imageid not in (select id from Images); 
select * from ImageComments where imageid not in (select id from Images); 
select * from ImageCopyright where imageid not in (select id from Images); 
select * from Tags where pid != 0 and pid not in (select id from Tags); 
select id, icon from Tags where icon != 0 and icon not in (select id from Images); 
select * from ImageTags where tagid not in (select id from Tags); 
select * from ImageTags where imageid not in (select id from Images); 
select * from ImageProperties where imageid not in (select id from Images); 
select * from ImageHistory where imageid not in (select id from Images); 
select * from ImageRelations where subject not in (select id from Images); 
select * from ImageRelations where object not in (select id from Images); 
select * from ImageTagProperties where imageid not in (select id from Images); 
select * from TagProperties where tagid not in (select id from Tags); 
select * from ImageTagProperties where tagid not in (select id from Tags); 

Es gibt auch eine Reparatur-Skript an der Quelle zu finden ist.

Und ich habe gerade erfahren, dass 5.2.0 vor zwei Tagen veröffentlicht wurde!

+0

Vielen Dank, dass Sie darauf hingewiesen haben. In meinem Fall geben Ihre Abfragen: 'wählen Sie * aus ImageInformation, wo Bildkennung nicht (ID aus Bildern auswählen); # 18 Zeilen ' ' wählen * aus ImageMetadata, wo Bild-ID nicht in (ID aus Bildern auswählen); # 18 Zeilen' 'Wählen * aus ImageComments, wo Bild-ID nicht in (ID aus Bildern wählen); # 21 Zeilen' 'wählen Sie * aus Tags, wo pid! = 0 und pid nicht in (wählen Sie ID aus Tags); # 1 row' 'select * von ImageTags wo tagid nicht in (ID aus Tags auswählen); # 8 rows' ' select * aus ImageTags wo imageid nicht in (ID aus Images auswählen); # 111 rows'. Lösche ich diese Zeilen? – balin

+0

Für ein "Jahrzehnt der Arbeit der Liebe" scheint es nur ein kleiner Verlust zu sein, also würde ich es einfach löschen. Natürlich nehme ich an, Sie haben eine Sicherungskopie Ihres aktuellen Status der db an einem sehr sicheren Ort ... Ich würde auch auf die Anhänge https://bugs.kde.org/attachment.cgi?id=99906 und suchen https://bugs.kde.org/attachment.cgi?id=99907 des Fehlerberichts - Fixieren der Datenbank vor dem Aktualisieren von Versuchen und manuellen Update-Skripts. – Jockel

+0

Lesen Sie Ihren Kommentar und löschen Sie alle Zeilen, aber die mit dem Stamm-Tag durch den Code erzeugt sowie durch das Schema v.7 bis V.8 Upgrade-Code mit dem Fehler behoben mein Problem gelöst. Vielen Dank. – balin

2

(eine harte Zeit, die Migration von Debian Wheezy auf Debian Stretch haben, hoffen, dass dies jemand hilft ...)

Das ist für mich gearbeitet:

  • sicher digiKam läuft machen nicht

  • kopieren Sie Ihre alte Konfigurationsdatei von ~/.kde/share/config/digikamrc zu ~/.config/digikamrc

  • öffnen Sie Ihre digikam4.db Datenbankdatei mit einigen SQLite-Editor (z. sqlitebrowser)

  • Editiertabelle AlbumRoots und fixieren Schrägstriche in Identifikator Spalte (d.h.ersetzen Sie alle Instanzen von %2F mit /)

    UPDATE AlbumRoots 
    SET identifier = replace(identifier, '%2F', '/') 
    WHERE identifier LIKE '%%%2F%'; 
    
  • speichern Sie die Datenbank

  • Finger (optional kreuzen, aber empfohlen)

  • Start digiKam

Viel Glück!

+0

Es hat sehr geholfen, danke! – palacsint

Verwandte Themen