Rest API /search/metadata endpoint fails if "withPeople" attribute specified #4099

Closed
opened 2026-02-05 09:43:40 +03:00 by OVERLORD · 1 comment
Owner

Originally created by @stitheridge on GitHub (Aug 17, 2024).

The bug

The rest endpoint /search/metadata triggers a 500 server error when I specify the "withPeople" attribute in the search object. The endpoint works fine with other similar attributes (say, "withExif"). It looks to be a database relationship mapping issue (see logs)

The OS that Immich Server is running on

Standard Docker image

Version of Immich Server

v1.112.1

Version of Immich Mobile App

v1.112.1

Platform with the issue

  • Server
  • Web
  • Mobile

Your docker-compose.yml content

immich:
    image: ghcr.io/imagegenius/immich:latest
    container_name: server_immich
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Pacific/Auckland
      - DB_HOSTNAME=192.168.1.XXX
      - DB_USERNAME=immich
      - DB_PASSWORD=XXXXX
      - DB_DATABASE_NAME=immich
      - REDIS_HOSTNAME=192.168.1.XXX
      - DISABLE_MACHINE_LEARNING=false #optional
      - DISABLE_TYPESENSE=false #optional
      - DB_PORT=5432 #optional
      - REDIS_PORT=6379 #optional
#      - LOG_LEVEL=debug
    volumes:
      - ./immich/config/main:/config
      - ./immich/state/uploads:/photos
      - "/mnt/02_photos:/mnt/media/main:ro"
      - ./immich/config/machine-learning:/config/machine-learning #optional
    ports:
      - 8080:8080
    restart: unless-stopped
    networks:
      docker_vlan:
        ipv4_address: 192.168.1.XXX

Your .env content

n/a

Reproduction steps

1) From host command line use url to invoke the endpoint. Like so:
curl -L 'https://immich.mydomain.com/api/search/metadata' -d '{"page" : 1, "size" : 10, "withExif": true, "withPeople": true, "personIds" : ["XXXXX"]}' -H 'Content-Type: application/json' -H 'Accept: application/json' -H "x-api-key: XXXXX"
2) Observe error response:
{
  "message": "Failed to search metadata",
  "error": "Internal Server Error",
  "statusCode": 500,
  "correlationId": "66058ubq"
}
3) Observe log output as shown below.

Relevant log output

server_immich  | [Nest] 172  - 08/17/2024, 9:46:46 PM   ERROR [Api:TypeORMError: Relation with property path person in entity was not found.
server_immich  |     at JoinAttribute.getValue (/app/immich/server/node_modules/typeorm/query-builder/JoinAttribute.js:109:23)
server_immich  |     at get relation [as relation] (/app/immich/server/node_modules/typeorm/query-builder/JoinAttribute.js:111:53)
server_immich  |     at get metadata [as metadata] (/app/immich/server/node_modules/typeorm/query-builder/JoinAttribute.js:122:18)
server_immich  |     at SelectQueryBuilder.join (/app/immich/server/node_modules/typeorm/query-builder/SelectQueryBuilder.js:963:53)
server_immich  |     at SelectQueryBuilder.leftJoin (/app/immich/server/node_modules/typeorm/query-builder/SelectQueryBuilder.js:195:14)
server_immich  |     at SelectQueryBuilder.leftJoinAndSelect (/app/immich/server/node_modules/typeorm/query-builder/SelectQueryBuilder.js:215:14)
server_immich  |     at searchAssetBuilder (/app/immich/server/dist/utils/database.js:85:17)
server_immich  |     at SearchRepository.searchMetadata (/app/immich/server/dist/repositories/search.repository.js:65:53)
server_immich  |     at SearchService.searchMetadata (/app/immich/server/dist/services/search.service.js:83:68)
server_immich  |     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)~gj3pljkc] Failed to search metadata
server_immich  | [Nest] 172  - 08/17/2024, 9:46:46 PM   ERROR [Api:TypeORMError: Relation with property path person in entity was not found.
server_immich  |     at JoinAttribute.getValue (/app/immich/server/node_modules/typeorm/query-builder/JoinAttribute.js:109:23)
server_immich  |     at get relation [as relation] (/app/immich/server/node_modules/typeorm/query-builder/JoinAttribute.js:111:53)
server_immich  |     at get metadata [as metadata] (/app/immich/server/node_modules/typeorm/query-builder/JoinAttribute.js:122:18)
server_immich  |     at SelectQueryBuilder.join (/app/immich/server/node_modules/typeorm/query-builder/SelectQueryBuilder.js:963:53)
server_immich  |     at SelectQueryBuilder.leftJoin (/app/immich/server/node_modules/typeorm/query-builder/SelectQueryBuilder.js:195:14)
server_immich  |     at SelectQueryBuilder.leftJoinAndSelect (/app/immich/server/node_modules/typeorm/query-builder/SelectQueryBuilder.js:215:14)
server_immich  |     at searchAssetBuilder (/app/immich/server/dist/utils/database.js:85:17)
server_immich  |     at SearchRepository.searchMetadata (/app/immich/server/dist/repositories/search.repository.js:65:53)
server_immich  |     at SearchService.searchMetadata (/app/immich/server/dist/services/search.service.js:83:68)
server_immich  |     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)~gj3pljkc] TypeORMError: Relation with property path person in entity was not found.

Additional information

No response

Originally created by @stitheridge on GitHub (Aug 17, 2024). ### The bug The rest endpoint /search/metadata triggers a 500 server error when I specify the "withPeople" attribute in the search object. The endpoint works fine with other similar attributes (say, "withExif"). It looks to be a database relationship mapping issue (see logs) ### The OS that Immich Server is running on Standard Docker image ### Version of Immich Server v1.112.1 ### Version of Immich Mobile App v1.112.1 ### Platform with the issue - [X] Server - [ ] Web - [ ] Mobile ### Your docker-compose.yml content ```YAML immich: image: ghcr.io/imagegenius/immich:latest container_name: server_immich environment: - PUID=1000 - PGID=1000 - TZ=Pacific/Auckland - DB_HOSTNAME=192.168.1.XXX - DB_USERNAME=immich - DB_PASSWORD=XXXXX - DB_DATABASE_NAME=immich - REDIS_HOSTNAME=192.168.1.XXX - DISABLE_MACHINE_LEARNING=false #optional - DISABLE_TYPESENSE=false #optional - DB_PORT=5432 #optional - REDIS_PORT=6379 #optional # - LOG_LEVEL=debug volumes: - ./immich/config/main:/config - ./immich/state/uploads:/photos - "/mnt/02_photos:/mnt/media/main:ro" - ./immich/config/machine-learning:/config/machine-learning #optional ports: - 8080:8080 restart: unless-stopped networks: docker_vlan: ipv4_address: 192.168.1.XXX ``` ### Your .env content ```Shell n/a ``` ### Reproduction steps ```bash 1) From host command line use url to invoke the endpoint. Like so: curl -L 'https://immich.mydomain.com/api/search/metadata' -d '{"page" : 1, "size" : 10, "withExif": true, "withPeople": true, "personIds" : ["XXXXX"]}' -H 'Content-Type: application/json' -H 'Accept: application/json' -H "x-api-key: XXXXX" 2) Observe error response: { "message": "Failed to search metadata", "error": "Internal Server Error", "statusCode": 500, "correlationId": "66058ubq" } 3) Observe log output as shown below. ``` ### Relevant log output ```shell server_immich | [Nest] 172 - 08/17/2024, 9:46:46 PM ERROR [Api:TypeORMError: Relation with property path person in entity was not found. server_immich | at JoinAttribute.getValue (/app/immich/server/node_modules/typeorm/query-builder/JoinAttribute.js:109:23) server_immich | at get relation [as relation] (/app/immich/server/node_modules/typeorm/query-builder/JoinAttribute.js:111:53) server_immich | at get metadata [as metadata] (/app/immich/server/node_modules/typeorm/query-builder/JoinAttribute.js:122:18) server_immich | at SelectQueryBuilder.join (/app/immich/server/node_modules/typeorm/query-builder/SelectQueryBuilder.js:963:53) server_immich | at SelectQueryBuilder.leftJoin (/app/immich/server/node_modules/typeorm/query-builder/SelectQueryBuilder.js:195:14) server_immich | at SelectQueryBuilder.leftJoinAndSelect (/app/immich/server/node_modules/typeorm/query-builder/SelectQueryBuilder.js:215:14) server_immich | at searchAssetBuilder (/app/immich/server/dist/utils/database.js:85:17) server_immich | at SearchRepository.searchMetadata (/app/immich/server/dist/repositories/search.repository.js:65:53) server_immich | at SearchService.searchMetadata (/app/immich/server/dist/services/search.service.js:83:68) server_immich | at process.processTicksAndRejections (node:internal/process/task_queues:95:5)~gj3pljkc] Failed to search metadata server_immich | [Nest] 172 - 08/17/2024, 9:46:46 PM ERROR [Api:TypeORMError: Relation with property path person in entity was not found. server_immich | at JoinAttribute.getValue (/app/immich/server/node_modules/typeorm/query-builder/JoinAttribute.js:109:23) server_immich | at get relation [as relation] (/app/immich/server/node_modules/typeorm/query-builder/JoinAttribute.js:111:53) server_immich | at get metadata [as metadata] (/app/immich/server/node_modules/typeorm/query-builder/JoinAttribute.js:122:18) server_immich | at SelectQueryBuilder.join (/app/immich/server/node_modules/typeorm/query-builder/SelectQueryBuilder.js:963:53) server_immich | at SelectQueryBuilder.leftJoin (/app/immich/server/node_modules/typeorm/query-builder/SelectQueryBuilder.js:195:14) server_immich | at SelectQueryBuilder.leftJoinAndSelect (/app/immich/server/node_modules/typeorm/query-builder/SelectQueryBuilder.js:215:14) server_immich | at searchAssetBuilder (/app/immich/server/dist/utils/database.js:85:17) server_immich | at SearchRepository.searchMetadata (/app/immich/server/dist/repositories/search.repository.js:65:53) server_immich | at SearchService.searchMetadata (/app/immich/server/dist/services/search.service.js:83:68) server_immich | at process.processTicksAndRejections (node:internal/process/task_queues:95:5)~gj3pljkc] TypeORMError: Relation with property path person in entity was not found. ``` ### Additional information _No response_
OVERLORD added the 🗄️server label 2026-02-05 09:43:40 +03:00
Author
Owner

@danieldietzler commented on GitHub (Apr 1, 2025):

Fixed in #12857

@danieldietzler commented on GitHub (Apr 1, 2025): Fixed in #12857
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: immich-app/immich#4099