Eigentlich gibt es im Amarok-Wiki eine schöne Anleitung wie man seine Sammlung von SQLite nach MySQL konvertieren kann. Leider stieß ich dabei allerdings auf ein paar, zum Glück leicht lösbare, Schwierigkeiten.

Zunächst einmal habe ich analog zur Anleitung mit phpMyAdmin eine Datenbank mit dazugehörigem Benutzer für

Beim nächsten Importversuch scheiterte ich an einer "Duplicate Key"-Fehlermeldung. Ursache des ganzen war, dass die Datenbank mit der Kollation latin1_swedish_ci erstellt worden war, Amarok aber wie ganz KDE natürlich mit UTF-8 Zeichenketten arbeitet. Zum Glück kann man die Kollation in phpMyAdmin wenn man die Datenbank ausgewählt hat im Tab Operationen leicht auf utf8_general_ci ändern. Anschließend einmal alle Tabellen droppen und nochmal von vorne. Die Kollation latin1_swedish_ci scheint übrigens entweder in MySQL oder phpMyAdmin die Standardeinstellung zu sein. Zumindest habe ich dieses Verhalten schon auf mehreren Systemen beobachtet. Wer aufpasst kann sie übrigens in phpMyAdmin auch gleich beim Anlegen der Datenbank richtig auswählen.

Als nächstes stolperte ich über eine weitere kleine Inkonsistenz. So beachtet Amarok bei Verwendung der SQLite-Datenbank bei den Tags anscheinend die Groß-/Kleinschreibung. Dies macht natürlich eigentlich keinen Sinn, und da eine Groß-/Kleinschreibung ignorierende Kollation ausgewählt war hat MySQL sich natürlich korrekterweise über den Versuche mehrere gleiche Tags anzulegen beschwert. Also einfach mit einem Texteditor die Duplikate aus der Datai entfernt, Tabellen geleert und wieder von vorne.

Am Ender der Datei folgen noch ein paar "index create"-Statements. Da diese von Amarok bereits angelegt wurden schlagen diese ntürlich fehl. Da es die letzten Statements sind und die MySQL-Datenbank nicht transaktional ist kann man diesen Fehler aber getrost ignorieren.

Grund für die ganze Aktion war übrigens, dass Amarok bei großen Sammlungen mit der MySQL-Datenbank einiges schneller sein soll. Subjektiv scheint dies auch zu stimmen, allerdings habe ich keine Messungen durchgeführt welche diese Behauptung bestätigen.