Datenbank kaputt
Die vorherigen Befehle haben Datei-Dupikate entfernt. Unglücklicherweise ist dadurch die Datenbank kaputt,
denn die dort verzeichneten Dateien existieren nicht mehr.
Daher muß unbedingt nochmal fontlinge_base --dbinsert ~/fontbase ausgeführt werden.
Erst jetzt ist nicht nur der ~/fontbase-Ordner organisiert, sondern auch in der Datenbank korrekt eingetragen.
Duplicate Entry?
Falls Du die Meldung "DBD::mysql::st execute failed: Duplicate entry
'/pfad/zu/einem/font.ttf' for key 1 [...]" bekommst, versuchst Du
gerade, einen Font doppelt in der Datenbank einzutragen.
Wir fangen diese Duplikate ab, da sonst beim Dupekill Datenverluste
auftreten können - wenn man eine Datei mit sich selbst vergleicht,
ist sie mit hoher Wahrscheinlichkeit identisch ;-) und würde demzufolge
gelöscht.
Duplikate können mehrere Ursachen haben:
- Du verwendest
--dbkeep bei einem Verzeichnis, das Du
schonmal in die Datenbank eingelesen hast.
- Es gibt einen Symlink, der auf eine Datei verweist, die schon in der
Datenbank steht.
Wir lösen Symlinks beim Füllen der Datenbank
zu ihrem tatsächlichen Pfad auf, da der Dateiinhalt von Symlink und
der "echten" Datei identisch und demzufolge ein Löschen erlaubt
ist - und nach Murphy's Gesetz würde immer die Datei und nie der
Symlink gelöscht ;-)
- Du versuchst, ein Verzeichnis mit mehreren PostScript-Schriften, die
nicht in einzelne Verzeichnisse verteilt sind, einzulesen (z. B. direkt
von einer Schriften-CD). Bei PS-Fonts, die ja aus mehreren Dateien
bestehen, schreiben wir immer nur den Verzeichnisnamen, aber keine
Dateinamen, in die Datenbank.
Abhilfe: Sortiere die Schriften zuerst
mit --copy oder --move und lese
dann ~/fontbase neu in die Datenbank ein.
| |
Nur für Experten:
Wenn Du Deine Fontbase in mehreren Verzeichnissen verteilt hast, willst Du vermutlich
alle Verzeichnisse gleichzeitig in der Datenbank eingetragen haben. Dafür gibt es den
Parameter --dbkeep.
--dbkeep darf aber nicht beim Einlesen des ersten Verzeichnisses angegeben werden,
da sonst die veralteten Einträge nicht aus der Datenbank gelöscht würden.
Verwende also die Befehlsfolge
--dbinsert ~/fontbase
--dbinsert --dbkeep ~/many-fonts
--dbinsert --dbkeep ~/more-fonts
|