Dernière importation bloquée dans le dossier iPhoto Events après la migration vers l'application Photos

1

Je viens de mettre à jour la nouvelle application Photos sous OS X et de migrer ma bibliothèque iPhoto vers la nouvelle application. Tout en m'habituant à tous les changements, j'ai remarqué un problème: il semble que l'album Last Import soit bloqué dans le dossier iPhoto Events pour une raison quelconque. (La base de données iPhoto considère-t-elle la dernière importation comme un "événement"?)

Je peux dire que le seul album est Last Import parce que:

  • J'ai déplacé tous les autres albums du dossier, mais il est toujours indiqué qu'il reste un album à l'intérieur, même si la vue indique qu'il est vide à l'intérieur.

  • Lorsque je reviens à la vue d'album de niveau supérieur, le dossier iPhoto Events contient une vignette d'album, contrairement à la vue interne. La vignette du dossier correspond à la vignette de la dernière importation.

  • Lorsque je déplace des photos hors de Dernière importation et que je importe un ensemble de photos différent, les deux vignettes sont mises à jour.

Maintenant, voici le plus gros problème: si je supprime maintenant le dossier iPhoto Events, je perdrai définitivement l'album de la dernière importation, sans moyen apparent de le récupérer via l'interface utilisateur ou les préférences de l'application. (J'imagine que je peux le récupérer en modifiant le plist de l'application ~/Library/Containers/com.apple.Photos/Data/Library/Preferencesou un ou plusieurs fichiers dans le package, mais je ne sais pas où chercher.)

J'ai essayé

  • importer de nouvelles photos pour voir si Dernière importation va réapparaître, mais ce n'est pas le cas.

  • réparer la bibliothèque de photos en utilisant la même méthode que iPhoto (en attente Command ⌘et Option ⌥lors de l'ouverture de l'application), mais cela n'aide pas.

  • réparer la bibliothèque iPhoto avant de migrer vers Photos, mais cela n'aide pas non plus.

  • annuler la suppression, mais cela ramène simplement le dossier Dernière importation et le dossier Événements iPhoto.

Pour le moment, j'ai réimporté la bibliothèque iPhoto d'origine afin de préserver son état d'origine. Que puis-je faire pour séparer Dernière importation du dossier Événements iPhoto afin de pouvoir supprimer ce dernier en toute sécurité?

BoltClock
la source

Réponses:

0

J'ai créé une nouvelle bibliothèque iPhoto, je l'ai complétée avec des photos et j'ai migré cette bibliothèque vers Photos, mais je ne pouvais pas reproduire ce problème. Cela ressemble donc à un autre problème avec ma bibliothèque iPhoto originale . Génial.

J'ai donc décidé de regarder directement dans la base de données de la bibliothèque Photos pour voir ce qui se passait. La base de données de la bibliothèque de photos peut être trouvée dans ~/Pictures/Photos Library.photoslibrary/Database/Library.apdb; Il s'agit d'une base de données SQLite pouvant être ouverte à l'aide de l' sqlite3outil de ligne de commande ou de l'interface graphique de votre choix.

Si vous êtes sur le point de suivre les étapes de ma réponse au-delà de cette étape, n'oubliez pas de sauvegarder le fichier de bibliothèque avant de continuer .

Le schéma pour RKAlbumcontient une folderUuidcolonne qui associe un album à un dossier (in RKFolder). Dans la bibliothèque de photos migrée à partir de la nouvelle bibliothèque iPhoto, l’album de la dernière importation se présente comme suit:

sqlite> SELECT name, folderUuid FROM RKAlbum WHERE name = 'Last Import';
Last Import|LibraryFolder

Mais dans la bibliothèque de photos créée à partir de ma bibliothèque iPhoto d'origine, l'album se présente comme suit:

sqlite> SELECT name, folderUuid FROM RKAlbum WHERE name = 'Last Import';
Last Import|cQeJj7YPRmSxHysWN+ql4w

Notez qu'il folderUuids'agit d'une chaîne générée et non 'LibraryFolder'. De toute évidence, il s’agit d’un dossier arbitraire, en particulier du dossier Événements iPhoto créé dans le cadre du processus de migration. Et bien sûr:

sqlite> SELECT uuid, name FROM RKFolder WHERE uuid = 'cQeJj7YPRmSxHysWN+ql4w';
cQeJj7YPRmSxHysWN+ql4w|iPhoto Events

Comme solution de contournement immédiate, le changement de colonne directement semble fonctionner:

sqlite> UPDATE RKAlbum SET folderUuid = 'LibraryFolder' WHERE name = 'Last Import';

Maintenant, en ouvrant Photos et en supprimant le dossier Événements iPhoto, la dernière importation reste intacte. L'importation de nouvelles photos ne pose aucun autre problème. le dossier Dernière importation se comporte comme il l'a toujours fait et devrait l'être.


Par curiosité, j'ai décidé de découvrir ce qui entraînait la dernière importation de Photos dans le dossier Événements iPhoto.

Il se trouve que, dans ma bibliothèque iPhoto d’origine, la folderUuiddernière importation n’était pas 'LibraryFolder', mais 'AllProjectsItem'identique à la catégorie d’événements d’origine:

sqlite> SELECT name, folderUuid FROM RKAlbum WHERE name = 'Last Import';
Last Import|AllProjectsItem
sqlite> SELECT name, folderUuid FROM RKAlbum WHERE folderUuid = 'AllProjectsItem';
Events|AllProjectsItem
Last Import|AllProjectsItem

Ce n'est pas le cas dans la nouvelle bibliothèque iPhoto:

sqlite> SELECT name, folderUuid FROM RKAlbum WHERE name = 'Last Import';
Last Import|LibraryFolder

La correction de la colonne incorrecte dans la base de données de la bibliothèque iPhoto d'origine (avec la même UPDATEdéclaration que ci-dessus) semble également corriger le dossier de la dernière importation lors de la migration vers Photos. Je pense que je vais aller avec cela à la place car cela corrige à la fois les anciennes et les nouvelles bibliothèques.

Comme dans ma question précédente , je ne comprends pas pourquoi ni comment ma bibliothèque iPhoto d'origine a atteint cet état initial, ni pourquoi la réparation / reconstruction de la bibliothèque n'a pas aidé du tout. Ai-je été mordu par un bug rare dans iPhoto? Est-ce que j'utilisais iPhoto de manière incorrecte? Quoi qu’il en soit, j’ai la chance de connaître quelque chose à propos de SQLite et d’avoir pu résoudre ce problème moi-même - si, dans l’éventualité improbable, une personne rencontrait le même problème, j’espère que cet article leur sera utile. .

Encore une fois, assurez-vous de sauvegarder d'abord la bibliothèque entière .

BoltClock
la source