Hasura-v2.xx выдает Graphql-engine-1, завершающий работу с кодом 1 на `дорожке метаданных Hasura...`

Я пытаюсь начать с Хасуры. Итак, вот мойdocker-compose.ymlфайл:

      version: "3.6"
services:
  postgres:
    image: postgres:15
    restart: always
    volumes:
      - db_data:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: postgrespassword
  graphql-engine:
    build:
      context: .
      dockerfile: DockerfileHasura
    # command: /bin/sh -c 'hasura metadata track --all-tables --all-relationships --schema public --endpoint http://graphql-engine:8080 && exec graphql-engine serve'
    command: /bin/sh -c 'exec graphql-engine serve'
    ports:
    - "8080:8080"
    restart: always
    volumes:
    - ./migrations:/hasura-migrations
    - ./metadata:/hasura-metadata
    - ./track_tables.sh:/track_tables.sh
    environment:
      HASURA_GRAPHQL_METADATA_DATABASE_URL: postgres://postgres:postgrespassword@postgres:5432/postgres
      PG_DATABASE_URL: postgres://postgres:postgrespassword@postgres:5432/postgres
      HASURA_GRAPHQL_ENABLE_CONSOLE: "true" # set to "false" to disable console
      HASURA_GRAPHQL_DEV_MODE: "true"
      HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, query-log
      HASURA_GRAPHQL_CORS_DOMAIN: "*"
volumes:
  db_data:

И внутриDockerfileHasura, я просто устанавливаю CLI Hasura, чтобы отслеживать все таблицы/представления:

      FROM hasura/graphql-engine:v2.33.0

RUN curl -L https://github.com/hasura/graphql-engine/raw/stable/cli/get.sh | bash

Я даже не могу запустить систему сcommand: /bin/sh -c 'hasura metadata track --all-tables --all-relationships --schema public --endpoint http://graphql-engine:8080 && exec graphql-engine serve', это дает мне:graphql-engine-1 exited with code 1

Потом я это узнал, там в v2.xx они его больше не поддерживают. Но я хочу сделать это отражение жестко закодированным. Чтобы мне не приходилось открывать веб-консоль и редактировать что-то. Ссылка: https://github.com/hasura/graphql-engine/issues/1418#issuecomment-894306630 .

Теперь я получаю"field 'product' not found in type: 'query_root'",. Хотя они созданы.

В разделе данных не отображается никакого представления/таблицы:

Итак, какое-нибудь предложение или обходной путь для меня? Я хочу по умолчанию отслеживать каждую таблицу, созданную в моей системе Hasura.

1 ответ

Если использование графической консоли не подходит для вашего случая, я бы предложил вам создать простой скрипт, который:

  1. извлекает имена таблиц, которые вы хотите отслеживать, из вашей базы данных (что-то вроде строк, напримерselect ns.nspname as schema, cl.relname as table_name from pg_class cl join pg_namespace ns on cl.relnamespace = ns.oid where cl.relkind = 'r')
  2. Использует эти имена для создания запроса API pg_track_tables , который вы отправляете экземпляру hasura, например, черезcurl.
Другие вопросы по тегам