vendure-ecommerce / vendure

The commerce platform with customization in its DNA.
https://www.vendure.io
Other
5.6k stars 993 forks source link

Vendure is not able to create all the db tables #2838

Closed chandrasekharpatra closed 3 months ago

chandrasekharpatra commented 4 months ago

Describe the bug

While starting the server I keep getting the below error.

error 5/6/24, 11:25 PM - [Vendure Server] Timed out when awaiting the DB schema to be ready! QueryFailedError: relation "public.administrator" does not exist at PostgresQueryRunner.query (/Users/chandrasekhar.patra/Projects/ecommerce/demo-store/node_modules/typeorm/src/driver/postgres/PostgresQueryRunner.ts:331:19) at processTicksAndRejections (node:internal/process/task_queues:95:5) at async SelectQueryBuilder.loadRawResults (/Users/chandrasekhar.patra/Projects/ecommerce/demo-store/node_modules/src/query-builder/SelectQueryBuilder.ts:3805:25) at async SelectQueryBuilder.executeEntitiesAndRawResults (/Users/chandrasekhar.patra/Projects/ecommerce/demo-store/node_modules/src/query-builder/SelectQueryBuilder.ts:3551:26) at async SelectQueryBuilder.getRawAndEntities (/Users/chandrasekhar.patra/Projects/ecommerce/demo-store/node_modules/src/query-builder/SelectQueryBuilder.ts:1670:29) at async SelectQueryBuilder.getMany (/Users/chandrasekhar.patra/Projects/ecommerce/demo-store/node_modules/src/query-builder/SelectQueryBuilder.ts:1760:25) at async InitializerService.awaitDbSchemaGeneration (/Users/chandrasekhar.patra/Projects/ecommerce/demo-store/node_modules/@vendure/core/src/service/initializer.service.ts:73:32) at async InitializerService.onModuleInit (/Users/chandrasekhar.patra/Projects/ecommerce/demo-store/node_modules/@vendure/core/src/service/initializer.service.ts:40:9) at async Promise.all (index 1) at async callModuleInitHook (/Users/chandrasekhar.patra/Projects/ecommerce/demo-store/node_modules/@nestjs/core/hooks/on-module-init.hook.js:43:5) QueryFailedError: relation "public.zone" does not exist at PostgresQueryRunner.query (/Users/chandrasekhar.patra/Projects/ecommerce/demo-store/node_modules/typeorm/src/driver/postgres/PostgresQueryRunner.ts:331:19) at processTicksAndRejections (node:internal/process/task_queues:95:5) at async SelectQueryBuilder.loadRawResults (/Users/chandrasekhar.patra/Projects/ecommerce/demo-store/node_modules/src/query-builder/SelectQueryBuilder.ts:3805:25) at async SelectQueryBuilder.executeEntitiesAndRawResults (/Users/chandrasekhar.patra/Projects/ecommerce/demo-store/node_modules/src/query-builder/SelectQueryBuilder.ts:3551:26) at async SelectQueryBuilder.getRawAndEntities (/Users/chandrasekhar.patra/Projects/ecommerce/demo-store/node_modules/src/query-builder/SelectQueryBuilder.ts:1670:29) at async SelectQueryBuilder.getMany (/Users/chandrasekhar.patra/Projects/ecommerce/demo-store/node_modules/src/query-builder/SelectQueryBuilder.ts:1760:25) at async createSelfRefreshingCache (/Users/chandrasekhar.patra/Projects/ecommerce/demo-store/node_modules/@vendure/core/src/common/self-refreshing-cache.ts:71:29) at async ZoneService.createCache (/Users/chandrasekhar.patra/Projects/ecommerce/demo-store/node_modules/@vendure/core/src/service/services/zone.service.ts:61:16) at async ZoneService.ensureCacheExists (/Users/chandrasekhar.patra/Projects/ecommerce/demo-store/node_modules/@vendure/core/src/service/services/zone.service.ts:221:22) at async ZoneService.initZones (/Users/chandrasekhar.patra/Projects/ecommerce/demo-store/node_modules/@vendure/core/src/service/services/zone.service.ts:52:9) { query: 'SELECT "Zone"."createdAt" AS "Zone_createdAt", "Zone"."updatedAt" AS "Zone_updatedAt", "Zone"."name" AS "Zone_name", "Zone"."id" AS "Zone_id", "ZoneZone_members"."createdAt" AS "ZoneZone_members_createdAt", "ZoneZone_members"."updatedAt" AS "ZoneZone_members_updatedAt", "ZoneZone_members"."code" AS "ZoneZone_members_code", "ZoneZone_members"."type" AS "ZoneZone_members_type", "ZoneZone_members"."enabled" AS "ZoneZone_members_enabled", "ZoneZone_members"."id" AS "ZoneZone_members_id", "ZoneZone_members"."parentId" AS "ZoneZone_members_parentId", "ZoneZone_members"."discriminator" AS "ZoneZone_members_discriminator", "ZoneZone_membersZoneZone_members_translations"."createdAt" AS "Zone__Zone_membersZoneZone_members_translations_createdAt", "Zone__Zone_membersZoneZone_members_translations"."updatedAt" AS "ZoneZone_membersZoneZone_members_translations_updatedAt", "ZoneZone_membersZoneZone_members_translations"."languageCode" AS "6ec28857ea2abf818a953190ac5c79be0399257b", "Zone__Zone_membersZoneZone_members_translations"."name" AS "ZoneZone_membersZoneZone_members_translations_name", "ZoneZone_membersZoneZone_members_translations"."id" AS "Zone__Zone_membersZoneZone_members_translations_id", "Zone__Zone_membersZoneZone_members_translations"."baseId" AS "ZoneZone_membersZoneZone_members_translations_baseId" FROM "public"."zone" "Zone" LEFT JOIN "public"."zone_members_region" "Zone_ZoneZone_members" ON "Zone_ZoneZone_members"."zoneId"="Zone"."id" LEFT JOIN "public"."region" "ZoneZone_members" ON "ZoneZone_members"."id"="Zone_ZoneZone_members"."regionId" LEFT JOIN "public"."region_translation" "Zone__Zone_membersZoneZone_members_translations" ON "ZoneZone_membersZoneZone_members_translations"."baseId"="Zone__Zone_members"."id"', parameters: [], driverError: error: relation "public.zone" does not exist at /Users/chandrasekhar.patra/Projects/ecommerce/demo-store/node_modules/pg/lib/client.js:526:17 at processTicksAndRejections (node:internal/process/task_queues:95:5) at async PostgresQueryRunner.query (/Users/chandrasekhar.patra/Projects/ecommerce/demo-store/node_modules/typeorm/src/driver/postgres/PostgresQueryRunner.ts:260:25) at async SelectQueryBuilder.loadRawResults (/Users/chandrasekhar.patra/Projects/ecommerce/demo-store/node_modules/src/query-builder/SelectQueryBuilder.ts:3805:25) at async SelectQueryBuilder.executeEntitiesAndRawResults (/Users/chandrasekhar.patra/Projects/ecommerce/demo-store/node_modules/src/query-builder/SelectQueryBuilder.ts:3551:26) at async SelectQueryBuilder.getRawAndEntities (/Users/chandrasekhar.patra/Projects/ecommerce/demo-store/node_modules/src/query-builder/SelectQueryBuilder.ts:1670:29) at async SelectQueryBuilder.getMany (/Users/chandrasekhar.patra/Projects/ecommerce/demo-store/node_modules/src/query-builder/SelectQueryBuilder.ts:1760:25) at async createSelfRefreshingCache (/Users/chandrasekhar.patra/Projects/ecommerce/demo-store/node_modules/@vendure/core/src/common/self-refreshing-cache.ts:71:29) at async ZoneService.createCache (/Users/chandrasekhar.patra/Projects/ecommerce/demo-store/node_modules/@vendure/core/src/service/services/zone.service.ts:61:16) at async ZoneService.ensureCacheExists (/Users/chandrasekhar.patra/Projects/ecommerce/demo-store/node_modules/@vendure/core/src/service/services/zone.service.ts:221:22) { length: 112, severity: 'ERROR', code: '42P01', detail: undefined, hint: undefined, position: '1416', internalPosition: undefined, internalQuery: undefined, where: undefined, schema: undefined, table: undefined, column: undefined, dataType: undefined, constraint: undefined, file: 'parse_relation.c', line: '1428', routine: 'parserOpenTable' }, length: 112, severity: 'ERROR', code: '42P01', detail: undefined, hint: undefined, position: '1416', internalPosition: undefined, internalQuery: undefined, where: undefined, schema: undefined, table: undefined, column: undefined, dataType: undefined, constraint: undefined, file: 'parse_relation.c', line: '1428', routine: 'parserOpenTable' }

To Reproduce

  1. Create a vendure project from cli. Use sqlite3 as storage.
  2. Switch to posgres by changing the vendure-config file.
  3. Try starting the server using command "npm run dev:server"

Expected behavior

All the tables should created and server should start without error.

Environment (please complete the following information):

dim-anis commented 4 months ago

Facing the same issue when trying to deploy on Railway. Works fine locally though.

michaelbromley commented 3 months ago

When the database schema does not yet exist, you can set the dbConnectionOptions.synchronize setting to true and that will cause Vendure to populate the DB schema when it bootstraps.