## TL;DR
Run `prisma validate` to get the real error message, because P1012 is just Prisma saying the schema file itself is invalid. The get-config wasm detail tells you the failure happened while Prisma was reading the datasource block, so check the datasource provider, the url, and any env() references first. Fix the schema syntax, re-run validate until it passes, then retry your original command.

```text
error: prisma schema validation - (get-config wasm) error code: p1012
```

## Error
```text
error: prisma schema validation - (get-config wasm) error code: p1012
```

## Steps

1. Get the actual validation message. The P1012 line alone hides the detail:

```bash
npx prisma validate
```

Expected: output naming the exact problem, like a missing provider, an unknown env var, or a syntax error with a line number. If validate passes here, your schema file is fine and the failing command is reading a different schema path.

2. Check the datasource block. Most get-config P1012s live here:

```prisma
datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}
```

Expected: `provider` is a supported value (postgresql, mysql, sqlite, sqlserver, mongodb, cockroachdb) and `url` points at `env("...")` or a literal connection string. A typo in provider or a missing url is the most common cause.

3. Verify every `env("...")` referenced in the schema actually exists. Prisma does not fall back to shell env the way you might expect in every setup:

```bash
grep -o 'env("[A-Z_]*")' prisma/schema.prisma | sort -u
```

Expected: a short list like `env("DATABASE_URL")`. Then check your `.env` file defines each one. A referenced-but-undefined variable fails validation.

4. Look for a second schema file or a wrong schema path. Commands like `prisma generate --schema=./other/schema.prisma` validate that file, not the one you are editing.

Expected: `npx prisma validate --schema=[the schema path your command uses]` passes. If the paths differ, fix the command or the config, not the schema.

5. Re-run validate, then retry the original command:

```bash
npx prisma validate && npx prisma generate
```

Expected: `The schema at prisma/schema.prisma is valid` followed by a successful generate. Swap `generate` for whatever failed (migrate dev, db push).

## When to use
- Any Prisma command fails with error code P1012 mentioning schema validation
- The error text includes "(get-config wasm)", which points at datasource config parsing
- `prisma generate` fails in CI but works on your machine (usually a missing env var in CI)

## When not to use
- The error is P1001 (cant reach the database) or P1017 (server closed the connection), those are connection problems
- Migrate complains about drift or a failed migration, that is a migration history problem
- Queries fail at runtime with a PrismaClient error, the schema was valid enough to generate

## Tool compatibility
Prisma ORM 4.x and 5.x, all providers. `prisma validate` exists in the Prisma CLI shipped with @prisma/client. Node 16+.

## Variant phrasings

### prisma p1012 error on prisma db push
db push validates the schema before touching the database. Fix it with `prisma validate` first (steps 1-3). db push never gets far enough to need a database connection when the schema is invalid.

### error code p1012 prisma schema is invalid
Generic P1012 without the get-config note. Same workflow: `prisma validate` for the real message. Beyond the datasource block, check for duplicate model names and relation fields missing their opposite side.

### prisma validate passes but generate fails with p1012
Your generate is reading a different schema file than validate. Check `--schema` flags, the `schema` key in package.json prisma config, and multi-schema project setups. Make the paths agree.

## Why it happens
Prisma compiles your schema with a wasm module before doing anything else. P1012 means that compile step rejected the schema: a syntax error, a datasource block it cant parse, or a referenced env var it cant resolve. The get-config label tells you it died specifically while extracting the datasource configuration, which is why the datasource block is the first place to look.

## Edge cases
- `.env` files are not loaded when you run Prisma programmatically without dotenv. If validate passes in the terminal but fails inside your app, load dotenv before the Prisma client initializes.
- Windows line endings or a BOM at the start of schema.prisma can confuse the parser. Save the file as UTF-8 with LF endings.
- Comments with unbalanced quotes inside the schema can break parsing in older Prisma versions. If the error line points at a comment, upgrade Prisma.
- Monorepos often have several schema.prisma files. Make sure your editor and your CLI agree on which one is canonical.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_pup5Exd6I8r08rW53CStJg
