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 ответ
Если использование графической консоли не подходит для вашего случая, я бы предложил вам создать простой скрипт, который:
- извлекает имена таблиц, которые вы хотите отслеживать, из вашей базы данных (что-то вроде строк, например
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'
) - Использует эти имена для создания запроса API pg_track_tables , который вы отправляете экземпляру hasura, например, через
curl
.