Diesel CLI 是用于开发阶段调试以及后续部署数据库所使用的命令行工具。安装的最简单的方式是通过 cargo binstallcargo-binstall 工具需要独立安装1:

Set-ExecutionPolicy Unrestricted -Scope Process; iex (iwr "https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.ps1").Content

完成后通过 cargo binstall diesel_cli 命令即可安装。如果选择直接使用 cargo install,特别是使用 PostgreSQL 作为数据库后端时,需要先安装好 PG,然后将安装目录的 /bin/lib 添加到系统的 PATH 环境变量中。并且不仅仅是安装 diesel-cli 时需要使用,后面通过动态链接的形式编译应用时,也需要通过这种方式找到依赖项 libpg.lib

命令2

[!note] 注意 在执行命令前,需要确保通过以下任意一种方式提供 DATABASE_URL 环境变量:

  • 通过手动修改系统环境变量
  • 通过 dotenv 等读取写在文件 .env 中的环境变量
  • 通过 --database-url 选项在执行命令时传入

diesel setup

在当前目录自下而上寻找 migrations/ 目录,如果没有,则在找到第一个 Cargo.toml 时在它的同级目录创建。然后会尝试连接 DATABASE_URL 给出的数据库,如果找不到,会尝试创建一个新的。之后会在这个数据库中创建 Diesel 自己的数据表用于跟踪 migration 的执行情况。如果已经存在这张表,那么会执行所有目前尚未执行的 migrations。

diesel database

diesel database setup

尝试连接 DATABASE_URL 给出的数据库,如果找不到,会尝试创建一个新的。之后会在这个数据库中创建 Diesel 自己的数据表用于跟踪 migration 的执行情况。如果已经存在这张表,那么会执行所有目前尚未执行的 migrations。

database reset

尝试将 DATABASE_URL 指定的数据库删除,然后执行 diesel database setup

diesel migration

diesel migration generate

这个命令接受一个字符串作为参数,它是要生成的 migration 的名称。执行之后,migrations/ 目录下会按照 migrations/{current_timestamp}_{migration_name} 的格式新建文件夹,然后生成 up.sqldown.sql 两个 SQL 脚本文件。分别用于执行和回退这次 migration。

diesel migration run

执行所有尚未执行的 migration,具体会根据 DATABASE_URL 指定的数据库中 Diesel 的内部表来决定。

diesel migration revert

根据 DATABASE_URL 指定的数据库中 Diesel 的内部表,执行最近一次迁移的 down.sql 文件。

diesel migration redo

根据 DATABASE_URL 指定的数据库中 Diesel 的内部表,先执行最近一次迁移的 down.sql 文件,再执行对应的 up.sql

diesel print-schema

输出数据库 schema 的表格定义。