1diff --git a/pkg/database/sql/media.go b/pkg/database/sql/media.go
2index 4b48608a19f623d1b6021171ce0942fd88d10fbb..b13e267211958c82af7dafd03db2bd0b750cb5a4 100644
3--- a/pkg/database/sql/media.go
4+++ b/pkg/database/sql/media.go
5@@ -43,8 +43,8 @@ }
6
7 MediaThumbnail struct {
8 gorm.Model
9- Path string `gorm:"not null;unique"`
10- MediaID uint `gorm:"not null"`
11+ Path string
12+ MediaID uint `gorm:"not null"`
13 Media Media
14 }
15
16diff --git a/pkg/worker/scanner/exif_scanner.go b/pkg/worker/scanner/exif_scanner.go
17index da63c0b790a1491c49c7b0ad3b8cf3bdcc91baa3..c265223786ad32e266ec2809d6731471d0688787 100644
18--- a/pkg/worker/scanner/exif_scanner.go
19+++ b/pkg/worker/scanner/exif_scanner.go
20@@ -30,6 +30,10 @@ Size: 100,
21 })
22 }
23
24+func (t *EXIFScanner) OnFail(ctx context.Context, media *repository.Media, _ error) {
25+ _ = t.repository.CreateEXIF(ctx, media.ID, &repository.MediaEXIF{})
26+}
27+
28 func (e *EXIFScanner) Process(ctx context.Context, m *repository.Media) error {
29 exif, err := coroutine.WrapProcess(ctx, func() (*repository.MediaEXIF, error) { return fileop.ReadExif(m.Path) })
30 if err != nil {