hasura-backend-plus icon indicating copy to clipboard operation
hasura-backend-plus copied to clipboard

relation "migrations" does not exist 2.5.2 & up.

Open Destreyf opened this issue 3 years ago • 6 comments

This was already mentioned in #542, however I believe it deserves it's own ticket.

I can upgrade my 2.2.4 all the way up to 2.5.1 without any issue, going to 2.5.2 or higher results in an error message about the "migrations" relation not existing.

Would it be possible for someone to give me the create table sql needed to generate this migrations table?

This appears to originate from the postgres-migrations module, I'm not really sure how to address this beyond this point.

Destreyf avatar Jun 30 '21 22:06 Destreyf

Fixed in https://github.com/nhost/hasura-backend-plus/releases/tag/v2.7.1

elitan avatar Jul 16 '21 09:07 elitan

@elitan This is not fixed. The error still exists and will not allow me to update past 2.5.1.

Destreyf avatar Jul 22 '21 18:07 Destreyf

Copy of my docker-compose log:

hasura-backend-plus_1  | $ node -r ./dist/start.js
hasura-backend-plus_1  | Applying migrations
hasura-backend-plus_1  | (node:29) UnhandledPromiseRejectionWarning: Error: Migration failed. Reason: relation "migrations" does not exist
hasura-backend-plus_1  |     at /app/node_modules/postgres-migrations/dist/migrate.js:63:27
hasura-backend-plus_1  |     at processTicksAndRejections (internal/process/task_queues.js:95:5)
hasura-backend-plus_1  |     at async /app/node_modules/postgres-migrations/dist/with-lock.js:25:28
hasura-backend-plus_1  |     at async Object.applyMigrations (/app/dist/shared/migrations.js:13:9)
hasura-backend-plus_1  |     at async start (/app/dist/ts-start.js:29:5)
hasura-backend-plus_1  | (Use `node --trace-warnings ...` to show where the warning was created)
hasura-backend-plus_1  | (node:29) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
hasura-backend-plus_1  | (node:29) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
hasura-backend-plus_1  | Done in 1.54s.

Destreyf avatar Jul 22 '21 18:07 Destreyf

My logs from v2.5.1

hasura-backend-plus_1  | yarn run v1.22.5
hasura-backend-plus_1  | $ node -r ./dist/start.js
hasura-backend-plus_1  | Applying migrations
hasura-backend-plus_1  | Finished applying migrations
hasura-backend-plus_1  | Running on port 9001

Destreyf avatar Jul 22 '21 18:07 Destreyf

Do you have a docker-compose.yaml that I could try to reproduce this error on my end?

elitan avatar Jul 22 '21 19:07 elitan

This is the docker-compose file I'm using

version: '3.9'
services:
  postgres:
    image: postgres:12
    restart: "unless-stopped"
    env_file:
      - ./.env.development
    volumes:
      - db_data:/var/lib/postgresql/data

  adminer:
    image: adminer
    restart: always
    ports:
      - 9999:8080

  graphql:
    image: hasura/graphql-engine:v2.0.3
    ports:
      - '8888:8888'
    depends_on:
      - postgres
      - api
    restart: "unless-stopped"
    env_file:
      - ./.env.development
    command:
      - graphql-engine
      - serve
    volumes:
      - ./apps/hasura/migrations:/hasura-migrations
      - ./apps/hasura/metadata:/hasura-metadata

  hasura-backend-plus:
    image: nhost/hasura-backend-plus:v2.5.1
    ports:
      - '9001:9001'
    depends_on:
      - graphql
      - minio
    restart: "unless-stopped"
    environment:
      PORT: 9001
      HASURA_GRAPHQL_ENDPOINT: http://graphql:8888/v1/graphql
      HASURA_ENDPOINT: http://graphql:8888/v1/graphql
    env_file:
      - ./.env.development
    volumes:
      - ./apps/hasura/custom:/app/custom

  minio:
    image: minio/minio
    restart: "unless-stopped"
    volumes:
      - minio_data:/data
      - minio_config:/.minio
    environment:
      MINIO_ACCESS_KEY: minioaccesskey123123
      MINIO_SECRET_KEY: miniosecretkey123123
    entrypoint: sh
    command: -c 'mkdir -p /data/storage && /usr/bin/minio server --address :9000 /data'
    ports:
      - '9000:9000'

  api:
    image: node:14-buster-slim
    restart: "unless-stopped"
    working_dir: /app/
    volumes:
      - './dist/apps/api:/app'
      - './pacakge.json:/app/package.json'
      - './node_modules:/app/node_modules'
    entrypoint: sh
    command: -c 'cd /app && npm install -g nodemon && nodemon main.js'
    environment:
      - PORT=3333
    ports:
      - '3333:3333'

volumes:
  db_data:
  minio_data:
  minio_config:

Please note that I am using hasura 2.0.3, however this problem existed for me on hasura 1.3.3.

This project originally started on version 2.2.4 of hasura-backend-plus, I originally tried to go straight to 2.6.1, but that failed, so I started back at 2.2.4 and incremented the version number until it failed to start, which happened on version 2.5.2.

It may be the case that I need to restart the schema for hasura-backend-plus to fix this, but that would cause me some headaches around my hasura migrations, so I've been wanting to avoid that.

Destreyf avatar Jul 22 '21 19:07 Destreyf