#29600·immich

"Error loading image" displayed for a file and metadata extraction fails

Author: 1oh1Created Jul 5, 2026Updated Sep 16, 2026

I have searched the existing issues, both open and closed, to make sure this is not a duplicate report.

  • Yes

The bug

The OS that Immich Server is running on

dockge LXC on Proxmox VE 9.2.3

Version of Immich Server

v3.0.1

Version of Immich Mobile App

N/A

Platform with the issue

  • Server
  • Web
  • Mobile

Device make and model

No response

Your docker-compose.yml content

name: immich
services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    cap_add:
      - CAP_PERFMON
    devices:
      - /dev/dri/:/dev/dri/
    volumes:
      # Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - type: volume
        source: cifs_volume_immich-media
        target: /mnt/buntubox/Immich-media-readonly
        read_only: true
      - type: volume
        source: cifs_volume_immich-transcode-test
        target: /mnt/buntubox/transcode-test
        read_only: false
        bind:
          propagation: shared
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - .env
    ports:
      - 2283:2283
    depends_on:
      - redis
      - database
    restart: always
    healthcheck:
      disable: false
  immich-machine-learning:
    container_name: immich_machine_learning
    # For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag.
    # Example tag: ${IMMICH_VERSION:-release}-cuda
    image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
    # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
    #   file: hwaccel.ml.yml
    #   service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
    volumes:
      - model-cache:/cache
    env_file:
      - .env
    restart: always
    healthcheck:
      disable: false
  redis:
    container_name: immich_redis
    image: docker.io/valkey/valkey:8-bookworm@sha256:42cba146593a5ea9a622002c1b7cba5da7be248650cbb64ecb9c6c33d29794b1
    healthcheck:
      test: redis-cli ping || exit 1
    restart: always
  database:
    container_name: immich_postgres
    image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0-pgvectors0.2.0
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
      POSTGRES_INITDB_ARGS: --data-checksums
    volumes:
      # Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
      - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
    restart: always
volumes:
  model-cache: null
  cifs_volume_immich-media:
    driver: local
    driver_opts:
      type: cifs
      o: username=xxxxxxxxxx,password=xxxxxxxxxx,uid=0,gid=0,vers=3.1.1
      device: //buntubox/sharing/Immich-media
  cifs_volume_immich-transcode-test:
    driver: local
    driver_opts:
      type: cifs
      o: username=xxxxxxxxxx,password=xxxxxxxxxx,uid=0,gid=0,vers=3.1.1
      device: //buntubox/sharing/transcode-test
networks: {}

Your .env content

UPLOAD_LOCATION=./library
DB_DATA_LOCATION=./postgres
IMMICH_VERSION=release
# THIS BREAKS LOCAL ACCESS if set to true: https://github.com/immich-app/immich/pull/28279/changes
# https://github.com/community-scripts/ProxmoxVE/pull/13600
IMMICH_HELMET_FILE=false
DB_PASSWORD=xxxxxxxxxx
# The values below this line do not need to be changed
###################################################################################
DB_USERNAME=postgres
DB_DATABASE_NAME=immich

Reproduction steps

Steps to reproduce:

  1. Download test video file to NAS
  2. Open Immich website
  3. Configure a new external library that contains test video file
  4. Scan external library
  5. Notice there's no thumbnail on test video file
  6. Duplicate test video file on NAS and retry external library scan
  7. Notice there's no thumbnail on duplicate video file as well

Relevant log output

**Error logs on external library scan:**

[Nest] 24  - 07/05/2026, 4:07:42 PM     LOG [Api:LibraryService~w47g662p] Starting to scan library 69687ba9-bab0-4f93-9489-c4f43b364a99
[Nest] 6  - 07/05/2026, 4:07:42 PM     LOG [Microservices:LibraryService] Starting disk crawl of 1 import path(s) for library 69687ba9-bab0-4f93-9489-c4f43b364a99...
[Nest] 6  - 07/05/2026, 4:07:42 PM     LOG [Microservices:LibraryService] Checking 19 asset(s) against import paths and exclusion patterns in library 69687ba9-bab0-4f93-9489-c4f43b364a99...
[Nest] 6  - 07/05/2026, 4:07:42 PM     LOG [Microservices:LibraryService] 0 asset(s) out of 19 were offlined due to import paths and/or exclusion pattern(s) in library 69687ba9-bab0-4f93-9489-c4f43b364a99
[Nest] 6  - 07/05/2026, 4:07:42 PM     LOG [Microservices:LibraryService] Scanning library 69687ba9-bab0-4f93-9489-c4f43b364a99 for assets missing from disk...
[Nest] 6  - 07/05/2026, 4:07:42 PM     LOG [Microservices:LibraryService] Queued check of 19 of 19 (100.0 %) existing asset(s) so far in library 69687ba9-bab0-4f93-9489-c4f43b364a99
[Nest] 6  - 07/05/2026, 4:07:42 PM     LOG [Microservices:LibraryService] Finished queuing 19 asset check(s) for library 69687ba9-bab0-4f93-9489-c4f43b364a99
[Nest] 6  - 07/05/2026, 4:07:42 PM     LOG [Microservices:LibraryService] Crawled 20 file(s) so far: 1 of current batch of 20 will be imported to library 69687ba9-bab0-4f93-9489-c4f43b364a99...
[Nest] 6  - 07/05/2026, 4:07:42 PM     LOG [Microservices:LibraryService] Finished disk crawl, 20 file(s) found on disk and queued 1 file(s) for import into 69687ba9-bab0-4f93-9489-c4f43b364a99
[Nest] 6  - 07/05/2026, 4:07:42 PM     LOG [Microservices:LibraryService] Checked existing asset(s): 0 offlined, 0 onlined, 0 updated, 19 unchanged of current batch of 19 (Total progress: 19 of 19, 100.0 %) in library 69687ba9-bab0-4f93-9489-c4f43b364a99.
[Nest] 6  - 07/05/2026, 4:07:42 PM     LOG [Microservices:LibraryService] Imported 1 (20 done so far) file(s) into library 69687ba9-bab0-4f93-9489-c4f43b364a99
Query failed : {
  durationMs: 3.0396630000323057,
  error: PostgresError: value "5516939362" is out of range for type integer
      at ErrorResponse (file:///usr/src/app/server/node_modules/.pnpm/[email protected]/node_modules/postgres/src/connection.js:815:30)
      at handle (file:///usr/src/app/server/node_modules/.pnpm/[email protected]/node_modules/postgres/src/connection.js:489:6)
      at Socket.data (file:///usr/src/app/server/node_modules/.pnpm/[email protected]/node_modules/postgres/src/connection.js:324:9)
      at Socket.emit (node:events:508:28)
      at addChunk (node:internal/streams/readable:563:12)
      at readableAddChunkPushByteMode (node:internal/streams/readable:514:3)
      at Readable.push (node:internal/streams/readable:394:5)
      at TCP.onStreamRead (node:internal/stream_base_commons:189:23) {
    severity_local: 'ERROR',
    severity: 'ERROR',
    code: '22003',
    where: "unnamed portal parameter $27 = '...'",
    file: 'numutils.c',
    line: '314',
    routine: 'pg_strtoint32'
  },
  sql: 'with "audio" as (insert into "asset_audio" ("assetId", "bitrate", "index", "profile", "codecName") values ($1, $2, $3, $4, $5) on conflict ("assetId") do update set "bitrate" = "asset_audio"."bitrate", "index" = "asset_audio"."index", "profile" = "asset_audio"."profile", "codecName" = "asset_audio"."codecName"), "video" as (insert into "asset_video" ("assetId", "bitrate", "frameCount", "timeBase", "index", "profile", "level", "colorPrimaries", "colorTransfer", "colorMatrix", "dvProfile", "dvLevel", "dvBlSignalCompatibilityId", "codecName", "formatName", "formatLongName", "pixelFormat") values ($6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22) on conflict ("assetId") do update set "bitrate" = "asset_video"."bitrate", "timeBase" = "asset_video"."timeBase", "index" = "asset_video"."index", "profile" = "asset_video"."profile", "level" = "asset_video"."level", "colorPrimaries" = "asset_video"."colorPrimaries", "colorTransfer" = "asset_video"."colorTransfer", "colorMatrix" = "asset_video"."colorMatrix", "dvProfile" = "asset_video"."dvProfile", "dvLevel" = "asset_video"."dvLevel", "dvBlSignalCompatibilityId" = "asset_video"."dvBlSignalCompatibilityId", "codecName" = "asset_video"."codecName", "formatName" = "asset_video"."formatName", "formatLongName" = "asset_video"."formatLongName", "pixelFormat" = "asset_video"."pixelFormat"), "keyframe" as (insert into "asset_keyframe" ("assetId", "totalDuration", "packetCount", "outputFrames", "pts", "accDuration", "ownDuration") values ($23, $24, $25, $26, $27, $28, $29) on conflict ("assetId") do update set "pts" = "asset_keyframe"."pts", "accDuration" = "asset_keyframe"."accDuration", "ownDuration" = "asset_keyframe"."ownDuration", "totalDuration" = "asset_keyframe"."totalDuration", "packetCount" = "asset_keyframe"."packetCount", "outputFrames" = "asset_keyframe"."outputFrames") insert into "asset_exif" ("assetId", "dateTimeOriginal", "modifyDate", "timeZone", "latitude", "longitude", "country", "state", "city", "fileSizeInByte", "exifImageHeight", "exifImageWidth", "orientation", "projectionType", "bitsPerSample", "colorspace", "make", "model", "fps", "iso", "exposureTime", "lensModel", "fNumber", "focalLength", "description", "profileDescription", "rating", "livePhotoCID", "autoStackId", "tags") values ($30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $40, $41, $42, $43, $44, $45, $46, $47, $48, $49, $50, $51, $52, $53, $54, $55, $56, $57, $58, $59) on conflict ("assetId") do update set "description" = case when $60 = any("asset_exif"."lockedProperties") then "asset_exif"."description" else "excluded"."description" end, "exifImageWidth" = case when $61 = any("asset_exif"."lockedProperties") then "asset_exif"."exifImageWidth" else "excluded"."exifImageWidth" end, "exifImageHeight" = case when $62 = any("asset_exif"."lockedProperties") then "asset_exif"."exifImageHeight" else "excluded"."exifImageHeight" end, "fileSizeInByte" = case when $63 = any("asset_exif"."lockedProperties") then "asset_exif"."fileSizeInByte" else "excluded"."fileSizeInByte" end, "orientation" = case when $64 = any("asset_exif"."lockedProperties") then "asset_exif"."orientation" else "excluded"."orientation" end, "dateTimeOriginal" = case when $65 = any("asset_exif"."lockedProperties") then "asset_exif"."dateTimeOriginal" else "excluded"."dateTimeOriginal" end, "modifyDate" = case when $66 = any("asset_exif"."lockedProperties") then "asset_exif"."modifyDate" else "excluded"."modifyDate" end, "timeZone" = case when $67 = any("asset_exif"."lockedProperties") then "asset_exif"."timeZone" else "excluded"."timeZone" end, "latitude" = case when $68 = any("asset_exif"."lockedProperties") then "asset_exif"."latitude" else "excluded"."latitude" end, "longitude" = case when $69 = any("asset_exif"."lockedProperties") then "asset_exif"."longitude" else "excluded"."longitude" end, "projectionType" = case when $70 = any("asset_exif"."lockedProperties") then "asset_exif"."projectionType" else "excluded"."projectionType" end, "city" = case when $71 = any("asset_exif"."lockedProperties") then "asset_exif"."city" else "excluded"."city" end, "livePhotoCID" = case when $72 = any("asset_exif"."lockedProperties") then "asset_exif"."livePhotoCID" else "excluded"."livePhotoCID" end, "autoStackId" = case when $73 = any("asset_exif"."lockedProperties") then "asset_exif"."autoStackId" else "excluded"."autoStackId" end, "state" = case when $74 = any("asset_exif"."lockedProperties") then "asset_exif"."state" else "excluded"."state" end, "country" = case when $75 = any("asset_exif"."lockedProperties") then "asset_exif"."country" else "excluded"."country" end, "make" = case when $76 = any("asset_exif"."lockedProperties") then "asset_exif"."make" else "excluded"."make" end, "model" = case when $77 = any("asset_exif"."lockedProperties") then "asset_exif"."model" else "excluded"."model" end, "lensModel" = case when $78 = any("asset_exif"."lockedProperties") then "asset_exif"."lensModel" else "excluded"."lensModel" end, "fNumber" = case when $79 = any("asset_exif"."lockedProperties") then "asset_exif"."fNumber" else "excluded"."fNumber" end, "focalLength" = case when $80 = any("asset_exif"."lockedProperties") then "asset_exif"."focalLength" else "excluded"."focalLength" end, "iso" = case when $81 = any("asset_exif"."lockedProperties") then "asset_exif"."iso" else "excluded"."iso" end, "exposureTime" = case when $82 = any("asset_exif"."lockedProperties") then "asset_exif"."exposureTime" else "excluded"."exposureTime" end, "profileDescription" = case when $83 = any("asset_exif"."lockedProperties") then "asset_exif"."profileDescription" else "excluded"."profileDescription" end, "colorspace" = case when $84 = any("asset_exif"."lockedProperties") then "asset_exif"."colorspace" else "excluded"."colorspace" end, "bitsPerSample" = case when $85 = any("asset_exif"."lockedProperties") then "asset_exif"."bitsPerSample" else "excluded"."bitsPerSample" end, "rating" = case when $86 = any("asset_exif"."lockedProperties") then "asset_exif"."rating" else "excluded"."rating" end, "fps" = case when $87 = any("asset_exif"."lockedProperties") then "asset_exif"."fps" else "excluded"."fps" end, "tags" = case when $88 = any("asset_exif"."lockedProperties") then "asset_exif"."tags" else "excluded"."tags" end',
  params: [
    '1b989650-2ee0-47cc-b53d-b90bd1545d79',
    135349,
    1,
    2,
    'aac',
    '1b989650-2ee0-47cc-b53d-b90bd1545d79',
    0,
    0,
    90000,
    0,
    2,
    153,
    9,
    18,
    9,
    null,
    null,
    null,
    'hevc',
    'mpegts',
    'MPEG-TS (MPEG-2 Transport Stream)',
    'yuv420p10le',
    '1b989650-2ee0-47cc-b53d-b90bd1545d79',
    26762830,
    17830,
    17840,
    [
      5516939362, 5517012936, 5517086509, 5517158581, 5517164587,
      5517236659, 5517254677, 5517328251, 5517397320, 5517469392,
      5517541464, 5517547470, 5517619542, 5517625548, 5517697620,
      5517769692, 5517844767, 5517919842, 5517951373, 5518023445,
      5518098520, 5518148070, 5518223145, 5518295217, 5518340262,
      5518415337, 5518487409, 5518560982, 5518625547, 5518697619,
      5518769691, 5518777198, 5518852273, 5518870291, 5518939360,
      5518951372, 5519026447, 5519027949, 5519100021, 5519127048,
      5519200621, 5519275696, 5519281702, 5519287708, 5519293714,
      5519302723, 5519338759, 5519371792, 5519407828, 5519440861,
      5519472393, 5519517438, 5519592513, 5519667588, 5519741161,
      5519816236, 5519828248, 5519900320, 5519907828, 5519982903,
      5520054975, 5520082002, 5520154074, 5520226146, 5520298218,
      5520314734, 5520389809, 5520461881, 5520493413, 5520565485,
      5520592512, 5520667587, 5520709629, 5520781701, 5520853773,
      5520928848, 5520991911, 5521062481, 5521134553, 5521209628,
      5521278697, 5521350769, 5521422841, 5521440859, 5521515934,
      5521591009, 5521666084, 5521739658, 5521813231, 5521840258,
      5521912330, 5521987405, 5522062480, 5522080498, 5522155573,
      5522230648, 5522305723, 5522346264, 5522383801, 5522401819,
      ... 360 more items
    ],
    [
        39026,  121581,  186124,  258172,  274683,  339226,  364743,
       427785,  507338,  568879,  640927,  657438,  723482,  735490,
       797031,  869079,  954636, 1029686, 1061207, 1122748, 1203802,
      1257838, 1329886, 1404936, 1449966, 1516010, 1586557, 1664609,
      1735156, 1796697, 1868745, 1886757, 1955803, 1979819, 2038358,
      2060873, 2131420, 2137424, 2198965, 2236490, 2307037, 2385089,
      2391093, 2397097, 2403101, 2412107, 2448131, 2481153, 2517177,
      2550199, 2581720, 2626750, 2694295, 2775349, 2848898, 2919445,
      2937457, 2998998, 3017010, 3084555, 3153601, 3191126, 3252667,
      3324715, 3396763, 3423781, 3495829, 3560372, 3602400, 3663941,
      3701466, 3766009, 3818544, 3880085, 3952133, 4030185, 4100732,
      4171279, 4232820, 4307870, 4376916, 4448964, 4521012, 4549531,
      4615575, 4692126, 4771679, 4843727, 4918777, 4948797, 5010338,
      5089891, 5164941, 5188957, 5256502, 5334554, 5414107, 5454634,
      5492159, 5510171,
      ... 360 more items
    ],
    [
      1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501,
      1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501,
      1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501,
      1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501,
      1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501,
      1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501,
      1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501,
      1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501,
      1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501,
      1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501,
      ... 360 more items
    ],
    '1b989650-2ee0-47cc-b53d-b90bd1545d79',
    2017-06-11T08:54:21.428Z,
    2017-06-11T08:54:21.428Z,
    'UTC',
    null,
    null,
    null,
    null,
    null,
    774133052,
    2160,
    3840,
    '1',
    null,
    null,
    null,
    null,
    null,
    59.94005994005994,
    null,
    null,
    null,
    null,
    null,
    '',
    null,
    null,
    null,
    null,
    null,
    'description',
    'exifImageWidth',
    'exifImageHeight',
    'fileSizeInByte',
    'orientation',
    'dateTimeOriginal',
    'modifyDate',
    'timeZone',
    'latitude',
    'longitude',
    'projectionType',
    'city',
    'livePhotoCID',
    'autoStackId',
    'state',
    'country',
    'make',
    'model',
    'lensModel',
    'fNumber',
    'focalLength',
    'iso',
    'exposureTime',
    'profileDescription',
    'colorspace',
    'bitsPerSample',
    'rating',
    'fps',
    'tags'
  ]
}
[Nest] 6  - 07/05/2026, 4:07:45 PM   ERROR [Microservices:{"id":"1b989650-2ee0-47cc-b53d-b90bd1545d79","source":"upload"}] Unable to run job handler (AssetExtractMetadata): PostgresError: value "5516939362" is out of range for type integer
PostgresError: value "5516939362" is out of range for type integer
    at ErrorResponse (file:///usr/src/app/server/node_modules/.pnpm/[email protected]/node_modules/postgres/src/connection.js:815:30)
    at handle (file:///usr/src/app/server/node_modules/.pnpm/[email protected]/node_modules/postgres/src/connection.js:489:6)
    at Socket.data (file:///usr/src/app/server/node_modules/.pnpm/[email protected]/node_modules/postgres/src/connection.js:324:9)
    at Socket.emit (node:events:508:28)
    at addChunk (node:internal/streams/readable:563:12)
    at readableAddChunkPushByteMode (node:internal/streams/readable:514:3)
    at Readable.push (node:internal/streams/readable:394:5)
    at TCP.onStreamRead (node:internal/stream_base_commons:189:23)


**Error logs on clicking on video with no thumbnail:**

[Nest] 24  - 07/05/2026, 4:10:50 PM   ERROR [Api:ErrorInterceptor~lp6v9y09] Unknown error: Error: no result
Error: no result
    at SelectQueryBuilderImpl.executeTakeFirstOrThrow (/usr/src/app/server/node_modules/.pnpm/[email protected]/node_modules/kysely/dist/cjs/query-builder/select-query-builder.js:331:19)
    at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
    at async PersonService.getFacesById (/usr/src/app/server/dist/services/person.service.js:93:23)

Additional information

No response