如何迁移到 0.21.0

1. 从 drizzle-kit 命令中删除所有的 :dialect 前缀。

示例:将 drizzle-kit push:mysql 改为 drizzle-kit push

2. 更新 drizzle.config.ts 文件:

  • drizzle.config.ts 中添加 dialect。现在这是必需的,可以是 postgresqlmysqlsqlite
  • drizzle.config.ts 中添加 driver,仅当你使用 aws-data-apitursod1-http(WIP) 或 expo 时添加。否则,可以从 drizzle.config.ts 中移除 driver
  • 如果您在 dbCredentials 中使用了 connectionStringuri,现在应改为使用 url
import { defineConfig } from "drizzle-kit"

export default defineConfig({
    dialect: "sqlite", // "postgresql" | "mysql"
    driver: "turso", // 仅在使用 `aws-data-api`、`turso`、`d1-http`(WIP) 或 `expo` 时使用
    dbCredentials: {
        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 现在是必需的;指定您要连接到的数据库方言。可选的选项包括 mysqlpostgresqlsqlite
  • driver 现在是可选的,并且将具有特定的驱动程序,每个驱动程序都有一个不同的 dbCredentials 配置。可用的驱动程序有:
    • aws-data-api
    • turso
    • d1-http - 目前正在进行
    • expo
  • url - 之前存在的 connectionStringuri 的统一参数。
  • migrations - 一个新的对象参数,用于指定迁移命令的自定义表和模式:
    • table - drizzle 将存储迁移的自定义表。
    • schema - drizzle 将存储迁移的自定义模式(仅适用于 Postgres)。

所有新命令和更新命令的使用示例

import { defineConfig } from "drizzle-kit"

export default defineConfig({
    dialect: "sqlite", // "postgresql" | "mysql"
    driver: "turso"
    dbCredentials: {
        url: ""
    },
    migration: {
        table: "migrations",
        schema: "public"
    }
})

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>

用法

drizzle-kit generate --name init_db

🎉 新命令 migrate

现在,您可以直接使用 drizzle-kit 将生成的迁移应用于数据库。

用法

drizzle-kit migrate

默认情况下,drizzle-kit 将在 __drizzle_migrations 表中存储迁移数据条目,并在 PostgreSQL 的情况下存储在 drizzle 模式中。如果您想更改此设置,您需要在 drizzle.config.ts 中指定修改。

import { defineConfig } from "drizzle-kit"

export default defineConfig({
    migrations: {
        table: "migrations",
        schema: "public"
    }
})
Become a Gold Sponsor