Diesel CLI 是用于开发阶段调试以及后续部署数据库所使用的命令行工具。安装的最简单的方式是通过 cargo binstall
。cargo-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.sql
和 down.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 的表格定义。