Bug description
I have a monorepo with Nx managing it. There are few packages with different databases. With the latest version upgrade 7.2 when i run prisma migrate diff sometimes i get failure of Error in Schema engine.
Severity
⚠️ Major: Breaks core functionality (e.g., migrations fail)
Reproduction
Usually doesn't fail on the first time, usually it takes about 15-20 times, but this coupled with me having 10 packages having separate schema, it is 50% chance that it will fail for one.
I have created this loop to reproduce it. In shell script it fails after 10 tries. In node execSync it fails more often.
#!/usr/bin/env bash
set -euo pipefail
counter=0
while true; do
counter=$((counter + 1))
echo "Attempt #${counter}"
pnpm exec prisma migrate diff \
--from-schema=existing.prisma \
--to-schema=schema.prisma \
--script
echo "Success count: ${counter}"
done
schema.prisma
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
generator client {
provider = "prisma-client"
output = "../src/generated/prisma"
moduleFormat = "esm"
engineType = "client"
}
datasource db {
provider = "postgresql"
}
model configurations {
accountId String @map("account_id")
resourceId String @map("configuration_id")
name String @map("configuration_name")
values Json @map("configuration_json")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
instances instances[]
@@id([accountId, resourceId])
@@map("verifier_configurations")
}
model instances {
resourceId String @map("instance_id")
accountId String @map("account_id")
name String @map("instance_name")
configurationResourceId String? @map("configuration_resource_id")
inlineConfiguration Json @default("{}") @map("inline_configuration")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
status VerifierStatus @default(RUNNING) @map("status")
configuration configurations? @relation(fields: [accountId, configurationResourceId], references: [accountId, resourceId], onDelete: Restrict)
@@id([accountId, resourceId])
@@unique([resourceId])
@@map("verifier_instances")
}
// must match the enum in packages/types/src/verifier/status.ts
enum VerifierStatus {
UNKNOWN
STOPPED
RUNNING
}
existing.schema
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
generator client {
provider = "prisma-client"
output = "../src/generated/prisma"
moduleFormat = "esm"
engineType = "client"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model configurations {
accountId String @map("account_id")
resourceId String @map("configuration_id")
name String @map("configuration_name")
values Json @map("configuration_json")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
instances instances[]
@@id([accountId, resourceId])
@@map("verifier_configurations")
}
model instances {
resourceId String @map("instance_id")
accountId String @map("account_id")
name String @map("instance_name")
configurationResourceId String? @map("configuration_resource_id")
inlineConfiguration Json @default("{}") @map("inline_configuration")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
status VerifierStatus @default(RUNNING) @map("status")
configuration configurations? @relation(fields: [accountId, configurationResourceId], references: [accountId, resourceId], onDelete: Restrict)
@@id([accountId, resourceId])
@@unique([resourceId])
@@map("verifier_instances")
}
// must match the enum in packages/types/src/verifier/status.ts
enum VerifierStatus {
UNKNOWN
STOPPED
RUNNING
}
Expected vs. Actual Behavior
Expected: success
Frequency
Intermittent / Random
Does this occur in development or production?
Only in development (e.g., CLI tools, migrations, Prisma Studio)
Is this a regression?
Previosluy on 6.19.0, never failed
Workaround
Retry loop with 5 attempt.
Prisma Schema & Queries
In the reproduction steps
Prisma Config
None
Logs & Debug Info
prisma:getSchema Reading schema from single file /Users/antonio/dev/vidos/schema.prisma +0ms
prisma:engines binaries to download schema-engine +1468ms
prisma:getSchema Checking existence of /Users/antonio/dev/vidos/prisma/schema.prisma +10ms
prisma:getSchema Reading schema from single file /Users/antonio/dev/vidos/prisma/schema.prisma +0ms
prisma:getSchema Checking existence of /Users/antonio/dev/vidos/prisma/schema.prisma +0ms
prisma:getSchema Reading schema from single file /Users/antonio/dev/vidos/prisma/schema.prisma +0ms
prisma:cli:checkpoint Error from runCheckpointClientCheck() +1ms
prisma:cli:checkpoint {} +0ms
prisma:cli:checkpoint Error from tryToReadDataFromSchema() while processing the schema. This is not a fatal error. It will continue without th
e processed data. +1ms
prisma:cli:checkpoint {} +0ms
prisma:getSchema Reading schema from single file /Users/antonio/dev/vidos/.output/prisma-migrate/spec/databases/gateway/existing.prisma +212ms
prisma:getSchema Reading schema from single file /Users/antonio/dev/vidos/spec/databases/gateway/prisma/schema.prisma +2ms
prisma:schemaEngine:rpc starting Schema engine with binary: /Users/antonio/dev/vidos/node_modules/.pnpm/@prisma+engines@7.2.0/node_modules/@pr
isma/engines/schema-engine-darwin-arm64 +2ms
prisma:schemaEngine:rpc SENDING RPC CALL {"id":1,"jsonrpc":"2.0","method":"diff","params":{"from":{"tag":"schemaDatamodel","files":[{"path":"/
Users/antonio/dev/vidos/.output/prisma-migrate/spec/databases/gateway/existing.prisma","content":"// This is your Prisma schema file,\n// lear
n more about it in the docs: https://pris.ly/d/prisma-schema\n\ngenerator client {\n provider = \"prisma-client\"\n output = \".
./src/generated/prisma\"\n moduleFormat = \"esm\"\n engineType = \"client\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n url =
env(\"DATABASE_URL\")\n}\n\nmodel configurations {\n accountId String @map(\"account_id\")\n resourceId String @map(\"configuration_id\")\
n\n name String @map(\"configuration_name\")\n values Json @map(\"configuration_json\")\n\n createdAt DateTime @default(now()) @map(\"c
reated_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n instances instances[]\n\n @@id([accountId, resourceId])\n @@map(\"ga
teway_configurations\")\n}\n\nmodel instances {\n resourceId String @map(\"instance_id\")\n\n accountId String @map(\"accou
nt_id\")\n name String @map(\"instance_name\")\n configurationResourceId String? @map(\"configuration_resour
ce_id\")\n inlineConfiguration Json @default(\"{}\") @map(\"inline_configuration\")\n\n createdAt DateTime @default(now()) @map(\"c
reated_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n status GatewayStatus @default(RUNNING) @map(\"status\")\n\n configura
tion configurations? @relation(fields: [accountId, configurationResourceId], references: [accountId, resourceId], onDelete: Restrict)\n\n @@i
d([accountId, resourceId])\n @@unique([resourceId])\n @@map(\"gateway_instances\")\n}\n\n// must match the enum in packages/types/src/gatewa
y/status.ts\nenum GatewayStatus {\n UNKNOWN\n STOPPED\n RUNNING\n}\n"}]},"to":{"tag":"schemaDatamodel","files":[{"path":"/Users/antonio/dev
/vidos/spec/databases/gateway/prisma/schema.prisma","content":"// This is your Prisma schema file,\n// learn more about it in the docs: https:
//pris.ly/d/prisma-schema\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"../src/generated/prisma\"\n moduleF
ormat = \"esm\"\n engineType = \"client\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\nmodel configurations {\n accountId Strin
g @map(\"account_id\")\n resourceId String @map(\"configuration_id\")\n\n name String @map(\"configuration_name\")\n values Json @map(\
"configuration_json\")\n\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n
instances instances[]\n\n @@id([accountId, resourceId])\n @@map(\"gateway_configurations\")\n}\n\nmodel instances {\n resourceId String @m
ap(\"instance_id\")\n\n accountId String @map(\"account_id\")\n name String @map(\"instance_name\")\n
configurationResourceId String? @map(\"configuration_resource_id\")\n inlineConfiguration Json @default(\"{}\") @map(\"i
nline_configuration\")\n\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n
status GatewayStatus @default(RUNNING) @map(\"status\")\n\n configuration configurations? @relation(fields: [accountId, configurationResourc
eId], references: [accountId, resourceId], onDelete: Restrict)\n\n @@id([accountId, resourceId])\n @@unique([resourceId])\n @@map(\"gateway
_instances\")\n}\n\n// must match the enum in packages/types/src/gateway/status.ts\nenum GatewayStatus {\n UNKNOWN\n STOPPED\n RUNNING\n}\n
"}]},"script":true,"shadowDatabaseUrl":null,"exitCode":null,"filters":{"externalTables":[],"externalEnums":[]}}} +3ms
prisma:schemaEngine:stderr error: The following required arguments were not provided: +13ms
prisma:schemaEngine:stderr --datasource <JSON> +1ms
prisma:schemaEngine:stderr +0ms
prisma:schemaEngine:stderr USAGE: +0ms
prisma:schemaEngine:stderr schema-engine-darwin-arm64 [OPTIONS] --datasource <JSON> [SUBCOMMAND] +0ms
prisma:schemaEngine:stderr +0ms
prisma:schemaEngine:stderr For more information try --help +0ms
Error: Error: Error in Schema engine:
at ChildProcess.<anonymous> (/Users/antonio/dev/vidos/node_modules/.pnpm/prisma@7.2.0_@types+react@19.2.2_magicast@0.3.5_react-dom@19.2.0_
react@19.2.0__react@19.2.0_typescript@5.9.3/node_modules/prisma/build/index.js:400:116)
at ChildProcess.emit (node:events:508:28)
at ChildProcess._handle.onexit (node:internal/child_process:294:12)
Environment & Setup
- OS: macos but also on ubuntu ci
- Database: PostgreSQL
- Node.js version: v24.12.0
Prisma Version
pnpm prisma -v
prisma : 7.2.0
@prisma/client : 7.2.0
Operating System : darwin
Architecture : arm64
Node.js : v24.12.0
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/.pnpm/@prisma+engines@7.2.0/node_modules/@prisma/engines/schema-engine-darwin-arm64)
Default Engines Hash : 0c8ef2ce45c83248ab3df073180d5eda9e8be7a3
Studio : 0.9.0
Bug description
I have a monorepo with Nx managing it. There are few packages with different databases. With the latest version upgrade 7.2 when i run
prisma migrate diffsometimes i get failure ofError in Schema engine.Severity
Reproduction
Usually doesn't fail on the first time, usually it takes about 15-20 times, but this coupled with me having 10 packages having separate schema, it is 50% chance that it will fail for one.
I have created this loop to reproduce it. In shell script it fails after 10 tries. In node
execSyncit fails more often.schema.prismaexisting.schemaExpected vs. Actual Behavior
Expected: success
Frequency
Intermittent / Random
Does this occur in development or production?
Only in development (e.g., CLI tools, migrations, Prisma Studio)
Is this a regression?
Previosluy on 6.19.0, never failed
Workaround
Retry loop with 5 attempt.
Prisma Schema & Queries
In the reproduction steps
Prisma Config
None
Logs & Debug Info
Environment & Setup
Prisma Version