如何迁移到 0.21.0
1. 从 drizzle-kit 命令中删除所有的 :dialect
前缀。
示例:将 drizzle-kit push:mysql
改为 drizzle-kit push
。
2. 更新 drizzle.config.ts
文件:
- 在
drizzle.config.ts
中添加dialect
。现在这是必需的,可以是postgresql
、mysql
或sqlite
。 - 在
drizzle.config.ts
中添加driver
,仅当你使用aws-data-api
、turso
、d1-http
(WIP) 或expo
时添加。否则,可以从drizzle.config.ts
中移除driver
。 - 如果您在
dbCredentials
中使用了connectionString
或uri
,现在应改为使用url
。
3. 如果你使用的是 PostgreSQL 或 SQLite,并且在项目中生成了迁移,请运行 drizzle-kit up
,以便 Drizzle 将所有快照升级到 6 版本。
你可以在这里详细查看 0.21.0
中的所有更改
更新日志
❗ 升级快照
所有 PostgreSQL 和 SQLite 生成的快照都将升级到 6 版本。您将被提示运行 drizzle-kit up
来升级它们。
❗ 从 drizzle-kit
cli 命令中删除 :dialect
现在,您只需使用命令,如:
drizzle-kit generate
drizzle-kit push
- 等等
而无需指定方言。该参数已移至 drizzle.config.ts
中。
❗ 更新 drizzle.config
dialect
现在是必需的;指定您要连接到的数据库方言。可选的选项包括mysql
、postgresql
或sqlite
。driver
现在是可选的,并且将具有特定的驱动程序,每个驱动程序都有一个不同的dbCredentials
配置。可用的驱动程序有:aws-data-api
turso
d1-http
- 目前正在进行expo
url
- 之前存在的connectionString
和uri
的统一参数。migrations
- 一个新的对象参数,用于指定迁移命令的自定义表和模式:table
- drizzle 将存储迁移的自定义表。schema
- drizzle 将存储迁移的自定义模式(仅适用于 Postgres)。
所有新命令和更新命令的使用示例
Drizzle 驱动程序选择遵循以下策略:
如果指定了 driver
,将使用该驱动程序进行查询。
如果未指定驱动程序:
-
对于
postgresql
方言,Drizzle 将:- 检查是否已安装
pg
驱动程序并使用它。 - 如果没有,则尝试查找
postgres
驱动程序并使用它。 - 如果仍然找不到,尝试查找
@vercel/postgres
。 - 然后尝试
@neondatabase/serverless
。 - 如果找不到任何内容,则会抛出错误。
- 检查是否已安装
-
对于
mysql
方言,Drizzle 将:- 检查是否已安装
mysql2
驱动程序并使用它。 - 如果没有,则尝试查找
@planetscale/database
并使用它。 - 如果找不到任何内容,则会抛出错误。
- 检查是否已安装
-
对于
sqlite
方言,Drizzle 将:- 检查是否已安装
@libsql/client
驱动程序并使用它。 - 如果没有,则尝试查找
better-sqlite3
并使用它。 - 如果找不到任何内容,则会抛出错误。
- 检查是否已安装
❗ 不再支持 drizzle-kit 的 MySQL 模式/数据库
Drizzle Kit 不再处理 drizzle 模式文件中其他模式/数据库的任何模式更改。
新功能
🎉 拉关系
Drizzle 现在将从数据库中提取外键信息并将其转化为一个 relations
对象,以此来拉取 relations
。您可以在 introspection 完成后的 out
文件夹中查看 relations.ts
文件。
有关关系的更多信息,请查看 文档
🎉 为生成的迁移指定自定义名称
要为您的迁移指定名称,您可以使用 --name <name>
用法
🎉 新命令 migrate
现在,您可以直接使用 drizzle-kit
将生成的迁移应用于数据库。
用法
默认情况下,drizzle-kit 将在 __drizzle_migrations
表中存储迁移数据条目,并在 PostgreSQL 的情况下存储在 drizzle
模式中。如果您想更改此设置,您需要在 drizzle.config.ts
中指定修改。