vendure-ecommerce/vendure

Vendure is not able to create all the db tables

Closed this issue · 2 comments

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", "Zone__Zone_members"."createdAt" AS "Zone__Zone_members_createdAt", "Zone__Zone_members"."updatedAt" AS "Zone__Zone_members_updatedAt", "Zone__Zone_members"."code" AS "Zone__Zone_members_code", "Zone__Zone_members"."type" AS "Zone__Zone_members_type", "Zone__Zone_members"."enabled" AS "Zone__Zone_members_enabled", "Zone__Zone_members"."id" AS "Zone__Zone_members_id", "Zone__Zone_members"."parentId" AS "Zone__Zone_members_parentId", "Zone__Zone_members"."discriminator" AS "Zone__Zone_members_discriminator", "Zone__Zone_members__Zone__Zone_members_translations"."createdAt" AS "Zone__Zone_members__Zone__Zone_members_translations_createdAt", "Zone__Zone_members__Zone__Zone_members_translations"."updatedAt" AS "Zone__Zone_members__Zone__Zone_members_translations_updatedAt", "Zone__Zone_members__Zone__Zone_members_translations"."languageCode" AS "6ec28857ea2abf818a953190ac5c79be0399257b", "Zone__Zone_members__Zone__Zone_members_translations"."name" AS "Zone__Zone_members__Zone__Zone_members_translations_name", "Zone__Zone_members__Zone__Zone_members_translations"."id" AS "Zone__Zone_members__Zone__Zone_members_translations_id", "Zone__Zone_members__Zone__Zone_members_translations"."baseId" AS "Zone__Zone_members__Zone__Zone_members_translations_baseId" FROM "public"."zone" "Zone" LEFT JOIN "public"."zone_members_region" "Zone_Zone__Zone_members" ON "Zone_Zone__Zone_members"."zoneId"="Zone"."id" LEFT JOIN "public"."region" "Zone__Zone_members" ON "Zone__Zone_members"."id"="Zone_Zone__Zone_members"."regionId" LEFT JOIN "public"."region_translation" "Zone__Zone_members__Zone__Zone_members_translations" ON "Zone__Zone_members__Zone__Zone_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):

  • @vendure/core version: 2.2.3
  • Nodejs version: v20.9.0
  • Database (mysql/postgres etc): postgres
  • OS: Mac

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

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.