Simon,

Thank you again for the time you've spent on this and the recommendations 
below, it's really appreciated.

Kind regards,
Carlo.

________________________________
From: sqlite-users <sqlite-users-boun...@mailinglists.sqlite.org> on behalf of 
Simon Slavin <slav...@bigfraud.org>
Sent: 13 December 2018 17:26
To: SQLite mailing list
Subject: Re: [sqlite] Updating Folder_Path in Windows 10 Photos App

On 13 Dec 2018, at 2:57pm, Carlo capaldo <carlocapa...@hotmail.com> wrote:

> UPDATE folder
>
>    SET Folder_Path = 'E:\Photos'
>
> would change the directory references in all existing 16 rows currently 
> containing Folder_Path references to the wrong locations to the correct 
> location ‘E:\Photos’ however this also generates a “UNIQUE constraint failed” 
> error.

You are correct about what the command does.  However, the schema of the 
database (its structure, including how all its tables, indexes and views are 
defined) includes the following:

CREATE UNIQUE INDEX Folder_Path ON Folder(Folder_Path);

This means that no two rows in the Folder TABLE may have the same values for 
Folder_Path .  I'm sure that makes sense to the person who defined the schema, 
so let's look at the current values:

sqlite> .mode column
sqlite> .width 60 20
sqlite> SELECT Folder_Path,Folder_DisplayName FROM Folder;
C:\Users\carlo\Pictures                                       Pictures
C:\Users\carlo\Pictures\Saved Pictures                        Saved Pictures
C:\Users\carlo\Pictures\Camera Roll                           Camera Roll
                                                              OneDrive
                                                              Documents
                                                              Attachments
C:\Users\carlo\Pictures\Exported videos                       Exported videos
C:\Users\carlo\Pictures\2018-09                               2018-09
C:\Users\carlo\Pictures\2018-08                               2018-08
C:\Users\carlo\Pictures\GoPro                                 GoPro
C:\Users\carlo\OneDrive\Pictures                              Pictures
                                                              Pictures
                                                              Camera imports
                                                              2018-09-14
C:\Users\carlo\OneDrive\Pictures\Camera imports               Camera imports
C:\Users\carlo\OneDrive\Pictures\Camera imports\2018-09-14    2018-09-14
E:\Photos                                                     Photos

But they obviously shouldn't all be the same folder.  Each row in the table 
needs to refer to a different folder.

So I think you're changing data from the wrong table.  If you really have moved 
all your pictures into the new E:\Photos folder then you need to find the rows 
in other tables referring to Folder_Id and change them all to the new Folder_Id:

sqlite> .width 5 50
sqlite> SELECT Folder_Id,Folder_Path FROM Folder;
1      C:\Users\carlo\Pictures
2      C:\Users\carlo\Pictures\Saved Pictures
3      C:\Users\carlo\Pictures\Camera Roll
4
5
6
7      C:\Users\carlo\Pictures\Exported videos
13     C:\Users\carlo\Pictures\2018-09
14     C:\Users\carlo\Pictures\2018-08
16     C:\Users\carlo\Pictures\GoPro
17     C:\Users\carlo\OneDrive\Pictures
20
21
22
23     C:\Users\carlo\OneDrive\Pictures\Camera imports
24     C:\Users\carlo\OneDrive\Pictures\Camera imports\20
25     E:\Photos

Unfortunately there are a lot of tables in the database and with all the 
TRIGGERs I can see I don't really understand the consequences of making changes 
like this.  You might want to seek help from a forum which understands the 
software which uses this database.

> I also downloaded the SQLite CLI tool and tried to execute the command 
> ".schema" but received the error “unable to open database” when trying to 
> open the file. (The file opens without problems using the application ‘DB 
> Browser for SQLite’).

Works fine for me:

178:Desktop simon$ sqlite3 /Users/simon/Desktop/MediaDb.v1.sqlite
SQLite version 3.24.0 2018-06-04 14:10:15
Enter ".help" for usage hints.
sqlite> .schema folder
CREATE TABLE Folder(Folder_Id INTEGER PRIMARY KEY,Folder_ParentFolderId INTEGER 
REFERENCES Folder ON DELETE CASCADE,Folder_LibraryRelationship 
INTEGER,Folder_Source INTEGER,Folder_SourceId INTEGER REFERENCES Source ON 
DELETE CASCADE,Folder_Path TEXT COLLATE NoCaseUnicode,Folder_DisplayName TEXT 
COLLATE NoCaseLinguistic,Folder_DateCreated INTEGER,Folder_DateModified 
INTEGER,Folder_KnownFolderType INTEGER,Folder_SyncWith 
INTEGER,Folder_StorageProviderFileId TEXT,Folder_InOneDrivePicturesScope 
INTEGER,Folder_ItemCount INTEGER);
CREATE INDEX Folder_ParentFolderId ON Folder(Folder_ParentFolderId);
CREATE INDEX Folder_Source ON Folder(Folder_Source);
CREATE INDEX Folder_SourceId ON Folder(Folder_SourceId);
CREATE UNIQUE INDEX Folder_Path ON Folder(Folder_Path);
[etc.]

Simon.

_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to