Databases
Choose the database independently from the application runtime where supported. For example, a Cloudflare Worker or Hetzner application can both use Neon Postgres.
Choose a database
Section titled “Choose a database”| Database | Engine | Connection path | Setup |
|---|---|---|---|
| AWS RDS / Aurora | Postgres or MySQL | VPC connection; Data API on supported configurations | RDS & Aurora · Aurora + Drizzle |
| Aurora DSQL | Distributed SQL with Postgres wire compatibility | IAM-authenticated connection | DSQL + Drizzle |
| Cloudflare D1 | SQLite | Native Worker binding | D1 + Drizzle |
| Durable Object storage | SQLite per named object | Instance storage | Durable Objects |
| Fly Managed Postgres | Postgres | Private connection from a Fly Service | Managed Postgres |
| Neon | Postgres | Direct or pooled URL; Hyperdrive from Workers | Neon branches · Connections |
| PlanetScale Postgres | Postgres | Role connection URL; Hyperdrive from Workers | PlanetScale Postgres |
| PlanetScale Vitess | MySQL | Password connection URL; Hyperdrive from Workers | PlanetScale MySQL |
| Prisma Postgres | Postgres | Database connection URL | Prisma Postgres |
| Railway Postgres | Postgres | Private service URL or public TCP proxy | Railway Postgres |
| Railway MySQL | MySQL | Private service URL or public TCP proxy | Railway MySQL |
Hyperdrive pools connections to a database; it is not a database itself. The Hetzner guide hosts the application on Hetzner and the database on Neon.
Choose a client
Section titled “Choose a client”| Engine | Typed schema queries | Raw SQL |
|---|---|---|
| Postgres | Drizzle.Postgres · Prisma ORM | SQL.Postgres |
| MySQL | Drizzle.MySQL | SQL.MySQL |
| D1 | Drizzle.D1 | SQL.D1 |
| Durable Objects | Drizzle.DurableObject | Instance SQL |
Prisma ORM v8 requires PostgreSQL 17+. Aurora DSQL has its own authentication and SQL constraints; Postgres wire compatibility does not establish Prisma support or support for every PostgreSQL feature.
Commit migration files
Section titled “Commit migration files”pnpm exec drizzle-kit generategit add src/schema.ts drizzle.config.ts drizzlegit diff --cachedgit commit -m "Add schema migration"This example uses out: "./drizzle"; use the output directory configured by your generator and apply committed SQL through the selected database’s migration workflow. Private databases require a runner with network access.
Drizzle migrations · Handwritten SQL · Prisma contracts · Runtime integration guides