Next.js Discord

Discord Forum

Using Prisma with two different databases.

Unanswered
Cape lion posted this in #help-forum
Open in Discord
Cape lionOP
Hello, I have two different sql server databases I am trying to work with using Prisma ORM. I've been trying to get it working for a few hours now and I keep resulting in the same error. If anyone knows what I'm doing wrong please let me know.

generator client {
  provider = "prisma-client-js"
  output   = "../../node_modules/@prisma-ip-management/client"
}
datasource db {
  provider = "sqlserver"
  url      = env("DATABASE_URL2")
}


generator client {
  provider = "prisma-client-js"
  output   = "../../node_modules/@prisma-repair/client"
}
datasource db {
  provider = "sqlserver"
  url      = env("DATABASE_URL")
}


import { PrismaClient as PrismaClient1 } from "@prisma-repair/client";
import { PrismaClient as PrismaClient2 } from "@prisma-ip-management/client";

const globalForPrisma = global as unknown as {
  prisma?: PrismaClient1;
  prisma2?: PrismaClient2;
};

export const prisma = globalForPrisma.prisma || new PrismaClient1();
export const prisma2 = globalForPrisma.prisma2 || new PrismaClient2();

if (process.env.NODE_ENV !== "production") {
  globalForPrisma.prisma = prisma;
  globalForPrisma.prisma2 = prisma2;
}

14 Replies

Cape lionOP
import { prisma2 } from "@/lib/prisma";

export default async function IPManagementPage() {
  const test = await prisma2.iPAddresses.create({
    data: {
      IPAddress: "12345",
    },
  });
  return (
    <div>
      <h1>IP Management</h1>
    </div>
  );
}
Dutch
probably you cant have two db with prisma
Cape lionOP
That's what I'm beginning to think. Atleast not with SQL Server.
Dutch
maybe you can make this files as two
import { PrismaClient as PrismaClient1 } from "@prisma-repair/client";
import { PrismaClient as PrismaClient2 } from "@prisma-ip-management/client";

const globalForPrisma = global as unknown as {
  prisma?: PrismaClient1;
  prisma2?: PrismaClient2;
};

export const prisma = globalForPrisma.prisma || new PrismaClient1();
export const prisma2 = globalForPrisma.prisma2 || new PrismaClient2();

if (process.env.NODE_ENV !== "production") {
  globalForPrisma.prisma = prisma;
  globalForPrisma.prisma2 = prisma2;
}
Cape lionOP
I will try real quick
Dutch
It is not possible right now, see https://github.com/prisma/prisma/issues/2443
answered Sep 7, 2021 at 17:48
Cape lionOP
Oh dang
Dutch
maybe you can do it without prisma
Cape lionOP
Yeah, I see people saying drizzle supports it.
Dutch
as i know its multi tenancy
maybe you can find a cloud db supports multi tenancy