Releases: drizzle-team/drizzle-kit-mirror
v0.21.2
Bug fixes
A list of regressions after 0.21.0
that were fixed (there are more, and those should be fixed in the next patch releases):
- SQLite
generate
andpush
were not detecting new columns added. - Timestamps with precision in Postgres were always detected as a change on
push
- Unique constraints for PostgreSQL were not generated and pushed
- When adding columns to SQLite, table name was not escaped
Tickets that were closed
v0.21.1
Drizzle Studio support for per-database preferences
When connecting to different databases with Drizzle Local Studio, we will store all preferences such as selected tabs, hidden columns, pagination, etc., separately for each database
Drizzle Studio support for advanced bug report context
Now you can assist us in debugging Drizzle Studio errors. No more need to say, "Please share your schema with us"; just click a button, download the bug report, and send it to us!
v0.21.0
Breaking changes
❗ 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 generate
drizzle-kit push
- etc.
without 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 includemysql
,postgresql
, orsqlite
.driver
has become optional and will have a specific driver, each with a different configuration ofdbCredentials
. Available drivers are:aws-data-api
turso
d1-http
- currently WIPexpo
url
- a unified parameter for the previously existingconnectionString
anduri
.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:- Check if the
pg
driver is installed and use it. - If not, try to find the
postgres
driver and use it. - If still not found, try to find
@vercel/postgres
. - Then try
@neondatabase/serverless
. - If nothing is found, an error will be thrown.
- Check if the
-
For
mysql
dialect, Drizzle will:- Check if the
mysql2
driver is installed and use it. - If not, try to find
@planetscale/database
and use it. - If nothing is found, an error will be thrown.
- Check if the
-
For
sqlite
dialect, Drizzle will:- Check if the
@libsql/client
driver is installed and use it. - If not, try to find
better-sqlite3
and use it. - If nothing is found, an error will be thrown
- Check if the
❗ 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
New Features
🎉 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"
}
})
How to migrate from 0.20.18
to 0.21.0
1. Remove all :dialect
prefixes from your Drizzle-Kit commands.
Example: Change drizzle-kit push:mysql
to drizzle-kit push
.
2. Update your drizzle.config.ts
file:
- Add
dialect
todrizzle.config.ts
. It is now mandatory and can be 'postgresql', 'mysql', or 'sqlite'. - Add
driver
todrizzle.config.ts
ONLY if you are usingaws-data-api
,turso
,d1-http
(WIP), orexpo
. Otherwise, you can remove thedriver
fromdrizzle.config.ts
. - If you were using
connectionString
oruri
indbCredentials
, you should now useurl
.
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: ""
}
})
3. If you are using PostgreSQL and had migrations generated in your project, please run drizzle-kit up
so Drizzle can upgrade all the snapshots to version 6.
0.21.0-beta
This pre-release is available under
drizzle-kit@beta
Breaking changes
❗ Snapshots Upgrade
All PostgreSQL-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 generate
drizzle-kit push
- etc.
without specifing 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 includemysql
,postgresql
, orsqlite
.driver
has become optional and will have a specific driver, each with a different configuration ofdbCredentials
. Available drivers are:aws-data-api
- currently, Studio is a work in progress before the latest. All other commands work as expected.turso
d1-http
- currently WIPexpo
url
- a unified parameter for the previously existingconnectionString
anduri
.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:- Check if the
pg
driver is installed and use it. - If not, try to find the
postgres
driver and use it. - If still not found, try to find
@vercel/postgres
. - Then try
@neondatabase/serverless
. - If nothing is found, an error will be thrown.
- Check if the
-
For
mysql
dialect, Drizzle will:- Check if the
mysql2
driver is installed and use it. - If not, try to find
@planetscale/database
and use it. - If nothing is found, an error will be thrown.
- Check if the
-
For
sqlite
dialect, Drizzle will:- Check if the
@libsql/client
driver is installed and use it. - If not, try to find
better-sqlite3
and use it. - If nothing is found, an error will be thrown
- Check if the
❗ 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
New Features
🎉 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({
migration: {
table: "migrations",
schema: "public"
}
})
0.20.18
- Fixed the recurring issue with FK recreations on PlanetScale by using the
push:mysql
command
0.20.17
- Fixed
$default
values to work with new local drizzle studio. You will be forced to upgrade drizzle-kit
v0.20.16
- Fixed
0.20.15
bugs and force to upgrade from studio UI
v0.20.15
- Moving server instantiations from Local Drizzle Studio to drizzle-kit. Local Studio will now require an upgrade to the latest version of drizzle-kit
0.20.14
- 🐛 When upgrading from
<0.20.0
to0.20.0+
, if you have composite primary keys and are using thegenerate
command only for SQLite database, you may encounter amalformed
error from drizzle-kit for all snapshots. This issue has been fixed in this version
0.20.13
- New SQL Query Runner inside Drizzle Studio(https://local.drizzle.studio)