Skip to content

Memories not generating despite having photos from past years #19728

Description

@luca-trusca

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

  • Yes

The bug

The Memories feature is not working despite having a large collection of photos spanning multiple years. No memories are being generated automatically, and the memories table in the database remains empty (0 entries) even though there are 23,084 assets with 22,985 fully processed.

Investigation revealed that the memories-state entry is missing from the system_metadata table, which appears to be required for the memory generation process to function. Other similar features like facial-recognition-state, version-check-state, and reverse-geocoding-state are present and functioning correctly.

Attempted workarounds:

  1. Manually creating a memories-state entry with an old timestamp
  2. Deleting the memories-state entry (as suggested in community discussions)
  3. Restarting the server multiple times
  4. Resetting system configuration
  5. Manually creating a Memory generation job in Administration → Jobs

None of these workarounds resolved the issue. The system appears to be missing the automatic memory generation job/process.

The OS that Immich Server is running on

Linux (Debian 6.1.0-37-amd64)

Version of Immich Server

v1.135.3

Version of Immich Mobile App

N/A (issue observed on web interface)

Platform with the issue

  • Server
  • Web
  • Mobile

Your docker-compose.yml content

name: immich

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    extends:
      file: hwaccel.transcoding.yml
      service: quicksync
    networks:
      - default
      - traefik-proxy
    labels:
      traefik.enable: "true"
      traefik.http.routers.immich.entrypoints: web
      traefik.http.routers.immich.rule: Host(`immich.lutr.dev`)
      traefik.http.services.immich.loadbalancer.server.port: "2283"
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    environment:
      DB_PASSWORD: ${IMMICH_DB_PASSWORD}
    env_file:
      - .env
    ports:
      - '2283:2283'
    depends_on:
      - redis
      - database
    restart: always
    healthcheck:
      disable: false

  immich-machine-learning:
    container_name: immich_machine_learning
    image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
    extends:
      file: hwaccel.ml.yml
      service: openvino
    volumes:
      - model-cache:/cache
    environment:
      DB_PASSWORD: ${IMMICH_DB_PASSWORD}
    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: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:739cdd626151ff1f796dc95a6591b55a714f341c737e27f045019ceabf8e8c52
    networks:
      - default
    environment:
      POSTGRES_PASSWORD: ${IMMICH_DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
      POSTGRES_INITDB_ARGS: '--data-checksums'
    volumes:
      - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
    healthcheck:
      test: >-
        pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" || exit 1; Chksum="$$(psql --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" --tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1
      interval: 5m
      start_interval: 30s
      start_period: 5m
    command: >-
      postgres -c shared_preload_libraries=vectors.so -c 'search_path="$$user", public, vectors' -c logging_collector=on -c max_wal_size=2GB -c shared_buffers=512MB -c wal_compression=on
    restart: always

volumes:
  model-cache:

networks:
  traefik-proxy:
    external: true
  default:
    driver: bridge

Your .env content

UPLOAD_LOCATION="./library"
DB_DATA_LOCATION="./postgres"
TZ="Europe/Bucharest"
IMMICH_VERSION="release"
DB_USERNAME="postgres"
DB_DATABASE_NAME="immich"
IMMICH_DB_PASSWORD="[REDACTED]"

Reproduction steps

  1. Install Immich v1.135.3 using Docker Compose
  2. Upload a large collection of photos spanning multiple years (in this case, 23,084 assets from 1999-2024), some of them imported using the immich-go tool
  3. Allow all assets to be processed (metadata extraction, thumbnails, etc.)
  4. Wait for automatic memory generation (should occur daily/weekly)
  5. Check the Memories section in the web interface
  6. Observe that no memories are generated despite having photos from past years
  7. Database verification shows:
    • SELECT COUNT(*) FROM memories; returns 0
    • SELECT * FROM system_metadata WHERE key = 'memories-state'; returns no results
    • Other state entries (facial-recognition-state, version-check-state) are present and functioning

Relevant log output

No errors or warnings related to memory generation appear in the logs. The server starts successfully:

[Nest] 18  - 07/04/2025, 5:30:20 PM     LOG [Api:NestApplication] Nest application successfully started
[Nest] 18  - 07/04/2025, 5:30:20 PM     LOG [Api:Bootstrap] Immich Server is listening on http://[::1]:2283 [v1.135.3] [production]

Database shows photos available for memory generation:
- 22,985 out of 23,084 assets fully processed
- Photos span from 1999 to 2024 across 27 years

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status
    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions