Skip to content

@prisma/adapter-pg does not respect ?schema in postgres connection url, while other functionalities do #28961

Description

@sevenc-nanashi

Bug description

While Prisma v7's migration respects ?schema= in connection url for postgres database, @prisma/adapter-db does not respect ?schema= in connection url.

Severity

🔹 Minor: Unexpected behavior, but does not block development

Reproduction

https://github.com/sevenc-nanashi/prisma-v7-postgres-regression-test/blob/main/run/reproduce.ts

Expected vs. Actual Behavior

Expected Behavior: @prisma/adapter-pg respects ?schema=.
Actual Behavior: It ignores the schema and connects to public.

Frequency

Consistently reproducible

Does this occur in development or production?

Both development and production

Is this a regression?

It worked on Prisma v6, especially 6.19.1.

Workaround

Specify schema manually in the constructor.

Prisma Schema & Queries

https://github.com/sevenc-nanashi/prisma-v7-postgres-regression-test/blob/main/run/v6.ts
https://github.com/sevenc-nanashi/prisma-v7-postgres-regression-test/blob/main/run/v7.ts

Prisma Config

// This file was generated by Prisma, and assumes you have installed the following:
// npm install --save-dev prisma dotenv
import "dotenv/config";
import { defineConfig } from "prisma/config";

export default defineConfig({
  schema: "prisma/schema.prisma",
  migrations: {
    path: "prisma/migrations",
  },
  datasource: {
    url: process.env["DATABASE_URL"]!,
  },
});

Logs & Debug Info

Log


=== Reproducing... ===

=== Step 1: Starting Postgres container... ===
 postgres Pulling 
 postgres Pulled 
 Network prisma-v7-postgres-regression-test_default  Creating
 Network prisma-v7-postgres-regression-test_default  Created
 Container prisma-v7-postgres-regression-test-postgres-1  Creating
 Container prisma-v7-postgres-regression-test-postgres-1  Created
 Container prisma-v7-postgres-regression-test-postgres-1  Starting
 Container prisma-v7-postgres-regression-test-postgres-1  Started

=== Step 2: Waiting for Postgres to be ready... ===

=== Step 3: Installing Prisma v6... ===
[0.19ms] ".env"
bun add v1.3.3 (274e01c7)
Resolving dependencies
Resolved, downloaded and extracted [2]
Saved lockfile

installed prisma@6.19.1 with binaries:
 - prisma
installed @prisma/client@6.19.1

8 packages installed [2.75s]

=== Step 4: Preparing the database schema... ===
Connected to the database.
Schemas created.

=== Step 5: Running Prisma Migration... ===
Loaded Prisma config from prisma.config.ts.

Prisma config detected, skipping environment variable loading.
Prisma schema loaded from prisma/schema.prisma
Datasource "db": PostgreSQL database "mydatabase", schema "schema_1" at "localhost:5433"

1 migration found in prisma/migrations

Applying migration `20251226082204_init`

The following migration(s) have been applied:

migrations/
  └─ 20251226082204_init/
    └─ migration.sql
      
All migrations have been successfully applied.

=== Step 6: Generating Prisma Client... ===
Loaded Prisma config from prisma.config.ts.

Prisma config detected, skipping environment variable loading.
Prisma schema loaded from prisma/schema.prisma

✔ Generated Prisma Client (6.19.1) to ./generated/prisma in 41ms


=== Step 7: Running the reproduction script... ===
Tables in the database:
- schema_1._prisma_migrations
- schema_1.MyModel
Inserting a new record into MyModel...
Record inserted successfully.
Fetching all records from MyModel...
All Records: [
  {
    foo: "Hoge",
  }, {
    foo: "Fuga",
  }
]

=== It should been working. ===

=== Step 8: Tearing down Postgres container... ===
 Container prisma-v7-postgres-regression-test-postgres-1  Stopping
 Container prisma-v7-postgres-regression-test-postgres-1  Stopped
 Container prisma-v7-postgres-regression-test-postgres-1  Removing
 Container prisma-v7-postgres-regression-test-postgres-1  Removed
 Network prisma-v7-postgres-regression-test_default  Removing
 Network prisma-v7-postgres-regression-test_default  Removed

=== Step 9: Starting a new Postgres container... ===
 Network prisma-v7-postgres-regression-test_default  Creating
 Network prisma-v7-postgres-regression-test_default  Created
 Container prisma-v7-postgres-regression-test-postgres-1  Creating
 Container prisma-v7-postgres-regression-test-postgres-1  Created
 Container prisma-v7-postgres-regression-test-postgres-1  Starting
 Container prisma-v7-postgres-regression-test-postgres-1  Started

=== Step 10: Waiting for Postgres to be ready again... ===

=== Step 11: Installing Prisma v7... ===
[0.20ms] ".env"
bun add v1.3.3 (274e01c7)
Resolving dependencies
Resolved, downloaded and extracted [29]
Saved lockfile

installed prisma@7.2.0 with binaries:
 - prisma
installed @prisma/client@7.2.0

10 packages installed [1332.00ms]

=== Step 12: Preparing the database schema for v7... ===
Connected to the database.
Schemas created.

=== Step 13: Running Prisma Migration for v7... ===
Loaded Prisma config from prisma.config.ts.

Prisma schema loaded from prisma/schema.prisma.
Datasource "db": PostgreSQL database "mydatabase", schema "schema_1" at "localhost:5433"

1 migration found in prisma/migrations

Applying migration `20251226082204_init`

The following migration(s) have been applied:

migrations/
  └─ 20251226082204_init/
    └─ migration.sql

All migrations have been successfully applied.

=== Step 14: Generating Prisma Client for v7... ===
Loaded Prisma config from prisma.config.ts.

Prisma schema loaded from prisma/schema.prisma.

✔ Generated Prisma Client (7.2.0) to ./generated/prisma in 19ms


=== Step 15: Running the reproduction script for v7... ===
Tables in the database:
- schema_1._prisma_migrations
- schema_1.MyModel
Important: Schema exists in schema_1!
Inserting a new record into MyModel...
60 | 
61 | Example:
62 |   await prisma.$executeRawUnsafe(\`ALTER USER prisma WITH PASSWORD '\${password}'\`)
63 | 
64 | More Information: https://pris.ly/d/execute-raw
65 | `)}var Xn=({clientMethod:e,activeProvider:t})=>r=>{let n="",i;if(ar(r))n=r.sql,i={values:Ge(r.values),__prismaRawParameters__:!0};else if(Array.isA
rray(r)){let[o,...s]=r;n=o,i={values:Ge(s||[]),__prismaRawParameters__:!0}}else switch(t){case"sqlite":case"mysql":{n=r.sql,i={values:Ge(r.values),__pri
smaRawParameters__:!0};break}case"cockroachdb":case"postgresql":case"postgres":{n=r.text,i={values:Ge(r.values),__prismaRawParameters__:!0};break}case"s
qlserver":{n=Da(r),i={values:Ge(r.values),__prismaRawParameters__:!0};break}default:throw new Error(`The ${t} provider does not support ${e}`)}return i?
.values?Va(`prisma.${e}(${n}, ${i.values})`):Va(`prisma.${e}(${n})`),{query:n,parameters:i}},ja={requestArgsToMiddlewareArgs(e){return[e.strings,...e.va
lues]},middlewareArgsToRequestArgs(e){let[t,...r]=e;return new Ua.Sql(t,r)}},Ba={requestArgsToMiddlewareArgs(e){return[e]},middlewareArgsToRequestArgs(e
){return e[0]}};function ei(e){return function(r,n){let i,o=(s=e)=>{try{return s===void 0||s?.kind==="itx"?i??=Qa(r(s

PrismaClientKnownRequestError: 
Invalid `prisma.myModel.create()` invocation in
/Users/sevenc7c/mycompany/prisma-v7-postgres-regression-test/run/v7.ts:16:22

  13 });
  14 
  15 console.log("Inserting a new record into MyModel...");
→ 16 await prisma.myModel.create(
The table `public.MyModel` does not exist in the current database.
       meta: {
  modelName: "MyModel",
  driverAdapterError: 646 |       this.onError(e);
647 |     }
648 |   }
649 |   onError(error) {
650 |     debug("Error in performIO: %O", error);
651 |     throw new DriverAdapterError(convertDriverError(error));
                ^
DriverAdapterError: TableDoesNotExist
 cause: [Object ...],

      at onError (/Users/sevenc7c/mycompany/prisma-v7-postgres-regression-test/node_modules/@prisma/adapter-pg/dist/index.mjs:651:11)
      at performIO (/Users/sevenc7c/mycompany/prisma-v7-postgres-regression-test/node_modules/@prisma/adapter-pg/dist/index.mjs:646:12)
      at async queryRaw (/Users/sevenc7c/mycompany/prisma-v7-postgres-regression-test/node_modules/@prisma/adapter-pg/dist/index.mjs:566:41)
,
},
 clientVersion: "7.2.0",
       code: "P2021"

      at handleRequestError (/Users/sevenc7c/mycompany/prisma-v7-postgres-regression-test/node_modules/@prisma/client/runtime/client.js:65:8172)
      at handleAndLogRequestError (/Users/sevenc7c/mycompany/prisma-v7-postgres-regression-test/node_modules/@prisma/client/runtime/client.js:65:7467)
      at request (/Users/sevenc7c/mycompany/prisma-v7-postgres-regression-test/node_modules/@prisma/client/runtime/client.js:65:7174)

Bun v1.3.3 (macOS arm64)

=== It should be failing now. ===

=== Step 16: Tearing down Postgres container... ===
 Container prisma-v7-postgres-regression-test-postgres-1  Stopping
 Container prisma-v7-postgres-regression-test-postgres-1  Stopped
 Container prisma-v7-postgres-regression-test-postgres-1  Removing
 Container prisma-v7-postgres-regression-test-postgres-1  Removed
 Network prisma-v7-postgres-regression-test_default  Removing
 Network prisma-v7-postgres-regression-test_default  Removed

=== Reproduction completed. ===

Environment & Setup

  • OS: macOS 26.2
  • Database: PostgreSQL 18
  • Node.js version: bun 1.3.3

Prisma Version

❯ na prisma -v
Loaded Prisma config from prisma.config.ts.

Prisma schema loaded from prisma/schema.prisma.
prisma               : 7.2.0
@prisma/client       : 7.2.0
Operating System     : darwin
Architecture         : arm64
Node.js              : v25.2.1
TypeScript           : 5.9.3
Query Compiler       : enabled
PSL                  : @prisma/prisma-schema-wasm 7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3
Schema Engine        : schema-engine-cli 0c8ef2ce45c83248ab3df073180d5eda9e8be7a3 (at node_modules/@prisma/engines/schema-engine-darwin-arm64)
Default Engines Hash : 0c8ef2ce45c83248ab3df073180d5eda9e8be7a3
Studio               : 0.9.0

Checked regression in:

❯ na prisma -v
Loaded Prisma config from prisma.config.ts.

Prisma config detected, skipping environment variable loading.
Prisma schema loaded from prisma/schema.prisma
prisma                  : 6.19.1
@prisma/client          : 6.19.1
Computed binaryTarget   : darwin-arm64
Operating System        : darwin
Architecture            : arm64
Node.js                 : v25.2.1
TypeScript              : 5.9.3
Query Engine (Node-API) : libquery-engine c2990dca591cba766e3b7ef5d9e8a84796e47ab7 (at node_modules/@prisma/engines/libquery_engine-darwin-arm64.dylib.
node)
PSL                     : @prisma/prisma-schema-wasm 7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7
Schema Engine           : schema-engine-cli c2990dca591cba766e3b7ef5d9e8a84796e47ab7 (at node_modules/@prisma/engines/schema-engine-darwin-arm64)
Default Engines Hash    : c2990dca591cba766e3b7ef5d9e8a84796e47ab7
Studio                  : 0.511.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions