首页 > 其他分享 >Diesel CLI 及其命令

Diesel CLI 及其命令

时间:2024-07-31 23:07:18浏览次数:14  
标签:cargo CLI URL Diesel 数据库 diesel 命令 migration

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 的表格定义。


  1. cargo-bins/cargo-binstall ↩︎

  2. diesel/diesel_cli/README.md (2.2.x) ↩︎

标签:cargo,CLI,URL,Diesel,数据库,diesel,命令,migration
From: https://www.cnblogs.com/zhongdongy/p/18335695/rust-diesel-cli-commands

相关文章

  • Apache HttpClient发送文件时中文名变问号
    使用ApacheHttpClient发送multipart/form-data,包含有中文名的文件,对方收到的文件名中文变成了问号解决方法:发送方需要设置mode为HttpMultipartMode.RFC6532发送端代码如下,其中关键行为builder.setMode(HttpMultipartMode.RFC6532);importorg.apache.http.HttpEntity;impor......
  • [SPON IP]网络对讲广播系统的命令执行漏洞实验
    产品简介                 世邦通信SPONIP网络对讲广播系统采用领先的IPAudio技术,将音频信号以数据包形式在局域网和广域网上进行传送,是一套纯数字传输系统。-----------------------------------漏洞描述                世邦通......
  • bash: llamafactory-cli: command not found解决方案
      大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学......
  • rhel5、6、7、8版本基本管理命令
    基本配置任务RHEL5RHEL6RHEL7RHEL8图形化配置工具system-config-*gnome-control-center基于文本的配置工具system-config-*-tui配置打印机system-config-printergnome-control-center配置网络system-config-networknmclinmtuinm-connection......
  • docker中使用mongo命令显示命令未找到
    dockerpsdockerexec-it098e580a70f6bashmongosh是因为Mongodb6.0版本之后命令从mongo改为mongoshmogondb中的一些查找、删除命令:showdbsusexxxshowcollectionsdb.collectionName.find()//查看集合中的所有数据db.collectionName.remove({})//删......
  • Dos命令
    Dos命令1.打开CMD的方式开始+系统+命令提示符Win+R输入cmd打开控制台在任意文件夹下面,按住shift键+鼠标右键点击,在此处打开命令行窗口在资源管理器的地址栏前面加上cmd+空格路径管理员方式运行,右键选择以管理员方式运行2.常用Dos命令#盘符切换 盘名+:#查看当前目录下......
  • Linux常见命令及帮助文档使用方法
    一、Linux中的常见命令查看系统信息1.查看CPU[root@Rocky8~]#lscpuArchitecture:x86_64CPUop-mode(s):32-bit,64-bitByteOrder:LittleEndianCPU(s):2...2.查看硬盘[root@Rocky8~]#lsblkNAMEMAJ:MINRMSIZE......
  • 即使输出与参考不匹配,为什么 GEKKO 不提供最佳命令?
    以下内容与此问题相关:使用GEKKO的预测控制模型我正在尝试应用MPC将房间的温度保持在定义的范围内,但即使输出存在分歧,GEKKO也会给我空命令。我运行上一个问题中的更正代码:#Importlibraryimportnumpyasnpimportpandasaspdimporttimefromgekkoimpo......
  • Linux中expect命令使用报错“invalid command name “Y“ while executing “Y“ invo
    1.执行expect命令的时候一直在报错:spawnshsetup.sh#invalidcommandname"Y"  whileexecuting"Y"  invokedfromwithin"expect"[Y]Yes,Iagree. [N]No,Idon'tagree."",如下图所示:其中的源码:    /usr/bin/expect&l......
  • Linux系统解压ZIP文件命令
    在Linux系统中,你可以使用unzip命令来解压ZIP文件。以下是一些基本的使用示例:解压ZIP文件到当前目录:bashunzipfilename.zip解压ZIP文件到指定目录:bashunzipfilename.zip-d/path/to/directory查看ZIP文件内容(不解压):bashunzip-lfilename.zip递归解压ZIP文件中的所有......