Skip to main content
Prisma Documentation Docs

Search documentation

Type to search this documentation.

On this pageOverview

Schema location (Prisma ORM v7) (/docs/orm/v7/prisma-schema/overview/location)

For the complete Prisma documentation index, see llms.txt. A markdown version of any docs page is available by appending .md to its URL.

Documentation regarding proper location of Prisma Schema including default naming and multiple files.

Location: ORM > v7 > Prisma Schema > Overview > Schema location

The default name for the Prisma Schema is a single file schema.prisma in your prisma folder. When your schema is named like this, the Prisma CLI will detect it automatically.

The Prisma CLI looks for the Prisma Schema in the following locations, in the following order:

  1. The location specified by the --schema flag, which is available when you introspect, generate, migrate, and studio:

    Bash
    prisma generate --schema=./alternative/schema.prisma
  2. The location specified in the prisma.config.ts file:

    prisma.config.ts
    import { defineConfig } from "prisma/config";
    
    export default defineConfig({
      schema: "prisma/",
      ...
    });
  3. Default locations:

    • ./prisma/schema.prisma
    • ./schema.prisma

The Prisma CLI outputs the path of the schema that will be used. The following example shows the terminal output for prisma db pull:

text
Environment variables loaded from .env
Prisma Schema loaded from prisma/schema.prisma

Introspecting based on datasource defined in prisma/schema.prisma …

✔ Introspected 4 models and wrote them into prisma/schema.prisma in 239ms

Run prisma generate to generate Prisma Client.

How to organize and use a multi-file Prisma schema

If you prefer splitting your Prisma schema into multiple files, you can have a setup that looks as follows:

prisma/
├── migrations
├── models
│   ├── posts.prisma
│   ├── users.prisma
│   └── ... other `.prisma` files
└── schema.prisma

When using a multi-file Prisma schema, you must always explicitly specify the location of the directory that contains your schema files (including the main schema.prisma file with your generator block).

You can do this in two ways:

  • pass the --schema option to your Prisma CLI command (e.g. prisma migrate dev --schema ./prisma)

  • set the schema property in prisma.config.ts (for Prisma ORM v7):

    prisma.config.ts
    import { defineConfig, env } from "prisma/config";
    import "dotenv/config";
    
    export default defineConfig({
      schema: "prisma/",
      migrations: {
        path: "prisma/migrations",
        seed: "tsx prisma/seed.ts",
      },
      datasource: {
        url: env("DATABASE_URL"),
      },
    });

[!NOTE] We recommend using the Prisma Config file to specify the location of your Prisma schema. This is the most flexible way to specify the location of your Prisma schema alongside other configuration options.

[!WARNING] The schema.prisma file (which contains your generator block) must be located in the same directory that you specify in your schema configuration. For example, if you configure schema: 'prisma', your schema.prisma file must be at prisma/schema.prisma, not in a subdirectory like prisma/models/schema.prisma.

You must also place the migrations directory at the same level as your schema.prisma file.

For example, assuming schema.prisma defines the generator block, here's the correct directory structure:

# All files must be inside the `prisma/` directory
# `migrations` and `schema.prisma` must be at the same level
prisma/
├── migrations
├── models
│   ├── posts.prisma
│   └── users.prisma
└── schema.prisma  # Contains generator block

[!NOTE] If your schema files are in a prisma/ directory (as shown above), the Prisma CLI commands like prisma generate and prisma migrate dev will work without additional configuration, as ./prisma/schema.prisma is a default location.

We've found that a few patterns work well with this feature and will help you get the most out of it:

  • Organize your files by domain: group related models into the same file. For example, keep all user-related models in user.prisma while post-related models go in post.prisma.
  • Use clear naming conventions: schema files should be named clearly and succinctly. Use names like user.prisma and post.prisma and not myModels.prisma or CommentFeaturesSchema.prisma.
  • Have an obvious "main" schema file: while you can now have as many schema files as you want, you'll still need a place where you define your generator block. We recommend having a single schema file that's obviously the "main" file so that this block is easy to find. main.prisma, schema.prisma, and base.prisma are a few we've seen that work well.
  • Data sources: Data sources enable Prisma to connect to your database. This page explains how to configure data sources in your Prisma schema
  • Generators: Generators in your Prisma schema specify what assets are generated when the prisma generate command is invoked. This page explains how to configure generators
Suggest an edit

Propose a replacement for this page. The site team reviews it before applying any changes.

Export
Documentation menu