PrismaClientInitializationError: `PrismaClient` needs to be constructed with a non-empty, valid `PrismaClientOptions`:
Full error message
I created schema.prisma and schema.prisma
schema.prisma:
generator client {
provider = "prisma-client"
engineType = "client"
output = "./generated/main"
}
datasource db {
provider = "postgresql"
}
schemaSA.prisma:
generator client {
provider = "prisma-client"
engineType = "client"
output = "./generated/superadmin"
}
datasource db {
provider = "postgresql"
}
Then I created schema.config.ts and schemaSA.config.ts
schema.config.ts
/** @format */
import 'dotenv/config';
import { defineConfig } from 'prisma/config';
// Main Admin Database Configuration
export default defineConfig({
schema: 'prisma/schema.prisma',
migrations: {
path: 'prisma/migrations',
},
datasource: {
url: process.env.DATABASE_URL as string,
}
});
schemaSA.config.ts
/** @format */
import 'dotenv/config';
import { defineConfig } from 'prisma/config';
// Super Admin Database Configuration
export default defineConfig({
schema: 'prisma/schemaSA.prisma',
migrations: {
path: 'prisma/migrationsSA',
},
datasource: {
url: process.env.DATABASE_URL_SUPER_ADMIN as string,
},
});
Then I created main-prisma.service.ts and superadmin-prisma.service.ts
main-prisma.service.ts
import { Injectable, OnModuleInit, OnModuleDestroy } from '@nestjs/common';
import { PrismaClient } from 'prisma/generated/main';
import { PrismaPg } from '@prisma/adapter-pg';
import { readReplicas } from '@prisma/extension-read-replicas';
@Injectable()
export class MainPrismaService extends PrismaClient implements OnModuleInit, OnModuleDestroy {
constructor() {
const adapter = new PrismaPg({
connectionString: process.env.DATABASE_URL_ADMIN_POOLING as string,
});
super({ adapter });
// Create replica clients with adapters
const replicaAdapter1 = new PrismaPg({
connectionString: process.env.DATABASE_REPLICA_ADMIN_URL_1 as string,
});
const replicaAdapter2 = new PrismaPg({
connectionString: process.env.DATABASE_REPLICA_ADMIN_URL_2 as string,
});
const replicaClient1 = new PrismaClient({ adapter: replicaAdapter1 });
const replicaClient2 = new PrismaClient({ adapter: replicaAdapter2 });
// Extend with read replicas
this.$extends(
readReplicas({
replicas: [replicaClient1, replicaClient2],
}),
);
}
async onModuleInit() {
await this.$connect();
}
async onModuleDestroy() {
await this.$disconnect();
}
}
superadmin-prisma.service.ts
import { Injectable, OnModuleInit, OnModuleDestroy } from '@nestjs/common';
import { PrismaClient } from 'prisma/generated/superadmin';
import { PrismaPg } from '@prisma/adapter-pg';
import { readReplicas } from '@prisma/extension-read-replicas';
@Injectable()
export class SuperAdminPrismaService extends PrismaClient implements OnModuleInit, OnModuleDestroy {
constructor() {
const adapter = new PrismaPg({
connectionString: process.env.DATABASE_URL_SUPER_ADMIN_POOLING as string,
});
super({ adapter });
// Create replica clients with adapters
const replicaAdapter1 = new PrismaPg({
connectionString: process.env.DATABASE_REPLICA_SUPER_ADMIN_URL_1 as string,
});
const replicaAdapter2 = new PrismaPg({
connectionString: process.env.DATABASE_REPLICA_SUPER_ADMIN_URL_2 as string,
});
const replicaClient1 = new PrismaClient({ adapter: replicaAdapter1 });
const replicaClient2 = new PrismaClient({ adapter: replicaAdapter2 });
// Extend with read replicas
this.$extends(
readReplicas({
replicas: [replicaClient1, replicaClient2],
}),
);
}
async onModuleInit() {
await this.$connect();
}
async onModuleDestroy() {
await this.$disconnect();
}
}
THen I generated prisma client using commands:
npx prisma generate
npx prisma generate --schema=./prisma/schemaSA.prisma --config=./schemaSA.config.ts
Here, I have pasted the picture of the error in terminal:Solutionsource: stackoverflow \u2197
In Prisma 7 and later, you must construct the client with an adapter or accelerate URL. For example, with PostgreSQL: import { PrismaClient } from '@prisma/client'; import { PrismaPg } from '@prisma/adapter-pg'; const adapter = new PrismaPg({ connectionString: process.env.DATABASE_URL!, }); const prisma = new PrismaClient({ adapter }); Or, if you want Rust‑free direct connection via accelerate: const prisma = new PrismaClient({ accelerateUrl: process.env.DATABASE_URL!, });
API access
Get this solution programmatically \u2014 free, no authentication.
curl https://depscope.dev/api/error/324a971926aee97746d384a2c32f55394dcc6ff04de042dca8bc63d3bc881ce8hash \u00b7 324a971926aee97746d384a2c32f55394dcc6ff04de042dca8bc63d3bc881ce8