Skip to content

Provider Matrix

Nautilus supports PostgreSQL, MySQL, and SQLite. The schema language is shared, but some features are provider-specific.

Datasource Snippets

PostgreSQL

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

MySQL

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

SQLite

prisma
datasource db {
  provider = "sqlite"
  url      = "sqlite://./nautilus.db"
}

Capability Matrix

FeaturePostgreSQLMySQLSQLite
Native enum typeyesno native enum story documented hereno
Jsonb scalaryesnono
Json scalaryesyesyes
Stored computed columnyesyesyes
Virtual computed columnnoyesyes
BTree indexyesyesyes
Hash indexyesyesno
Gin indexyesnono
Gist indexyesnono
Brin indexyesnono
FullText indexnoyesno
Datasource extensionsyesnono
Citext, Hstore, Ltreeyes, with matching extensionnono
PostGIS Geometry / Geographyyes, with postgisnono
pgvector Vector(N)yes, with vectornono
pgvector Hnsw / Ivfflat indexyesnono
pgvector nearest-neighbor queryyesnono
Arrays/composites via @store(json)yesyesyes
Fastest zero-setup local loopnonoyes

DDL and Runtime Differences

AreaPostgreSQLMySQLSQLite
Quoting style"name"`name`"name"
Returning behaviornative RETURNINGomitted / emulatedRETURNING on supported versions
Richest index supporthighestmediumlowest
Extension diffingdeclared extensions are created; extra live extensions may be dropped unless preserve_extensions = truenot supportednot supported
Alter table flexibilityhighmediumlowest
Some complex diffs may rebuild tablesless oftensometimesmore often

Choosing a Default

Use:

  • PostgreSQL when you want the richest Nautilus feature surface
  • MySQL when you need a mainstream MySQL-family deployment target
  • SQLite when you want the easiest local experimentation and zero-service setup

More Detail

Based on the upstream Nautilus project by nautilus-env.