On 13 Dec 2018, at 2:57pm, Carlo capaldo <[email protected]> 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
[email protected]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users