src/content/docs/upgrade-21.mdx
import Callout from '@mdx/Callout.astro';
0.21.0:dialect prefixes from your drizzle-kit commands.Example: Change drizzle-kit push:mysql to drizzle-kit push.
drizzle.config.ts file:dialect to drizzle.config.ts. It is now mandatory and can be postgresql, mysql, or sqlite.driver to drizzle.config.ts ONLY if you are using aws-data-api, turso, d1-http(WIP), or expo. Otherwise, you can remove the driver from drizzle.config.ts.connectionString or uri in dbCredentials, you should now use url.import { defineConfig } from "drizzle-kit"
export default defineConfig({
dialect: "sqlite", // "postgresql" | "mysql"
driver: "turso", // optional and used only if `aws-data-api`, `turso`, `d1-http`(WIP) or `expo` are used
dbCredentials: {
url: ""
}
})
drizzle-kit up so Drizzle can upgrade all the snapshots to version 6.❗ Snapshots Upgrade
All PostgreSQL and SQLite-generated snapshots will be upgraded to version 6. You will be prompted to upgrade them by running drizzle-kit up
❗ Removing :dialect from drizzle-kit cli commands
You can now just use commands, like:
drizzle-kit generatedrizzle-kit pushwithout specifying dialect. This param is moved to drizzle.config.ts
❗ drizzle.config update
dialect is now mandatory; specify which database dialect you are connecting to. Options include mysql, postgresql, or sqlite.driver has become optional and will have a specific driver, each with a different configuration of dbCredentials. Available drivers are:
aws-data-apitursod1-http - currently WIPexpourl - a unified parameter for the previously existing connectionString and uri.migrations - a new object parameter to specify a custom table and schema for the migrate command:
table - the custom table where drizzle will store migrations.schema - the custom schema where drizzle will store migrations (Postgres only).Usage examples for all new and updated commands
import { defineConfig } from "drizzle-kit"
export default defineConfig({
dialect: "sqlite", // "postgresql" | "mysql"
driver: "turso"
dbCredentials: {
url: ""
},
migration: {
table: "migrations",
schema: "public"
}
})
Drizzle driver selection follows the current strategy:
If a driver is specified, use this driver for querying.
If no driver is specified:
For postgresql dialect, Drizzle will:
pg driver is installed and use it.postgres driver and use it.@vercel/postgres.@neondatabase/serverless.For mysql dialect, Drizzle will:
mysql2 driver is installed and use it.@planetscale/database and use it.For sqlite dialect, Drizzle will:
@libsql/client driver is installed and use it.better-sqlite3 and use it.❗ MySQL schemas/database are no longer supported by drizzle-kit
Drizzle Kit won't handle any schema changes for additional schemas/databases in your drizzle schema file
🎉 Pull relations
Drizzle will now pull relations from the database by extracting foreign key information and translating it into a relations object. You can view the relations.ts file in the out folder after introspection is complete
For more info about relations, please check the docs
🎉 Custom name for generated migrations
To specify a name for your migration you should use --name <name>
Usage
drizzle-kit generate --name init_db
🎉 New command migrate
You can now apply generated migrations to your database directly from drizzle-kit
Usage
drizzle-kit migrate
By default, drizzle-kit will store migration data entries in the __drizzle_migrations table and, in the case of PostgreSQL, in a drizzle schema. If you want to change this, you will need to specify the modifications in drizzle.config.ts.
import { defineConfig } from "drizzle-kit"
export default defineConfig({
migrations: {
table: "migrations",
schema: "public"
}
})