在Windows10中使用rust的diesel库

news/2024/9/20 22:32:20

介绍

最近在学习Actix Web时,需要用到数据库操作,简单尝试了一下diesel,也遇到了一些问题。在这里记录一下,供大家参考。

1.安装

根据Diesel官网介绍,使用cargo binstall安装diesel cli。

cargo binstall diesel_cli

如果报错 error: no such command: `binstall` 需要先安装cargo-binstall库,再安装diesel_cli

cargo install cargo-binstall

建议使用binstall安装,会根据系统找到正确的二进制文件。

2.项目中使用diesel

新建项目或者使用已有项目。

添加依赖

在Cargo.toml中,添加diesel依赖项

[dependencies]
diesel = { version = "2.2.4", features = ["mysql"] }
dotenvy = "0.15.7"

创建.env文件

在项目中,创建.env文件,并将数据库URL配置信息保存到文件中

DATABASE_URL=mysql://username:password@server_ip/database_name

配置好之后,执行diesel cli命令

diesel setup

此时大概率会遇到报错(忘记截图了),原因在diesel连接数据库时,找不到libmysqlclient。
如果此时,尝试执行cargo build同样也会报错,报错原因是diesel这个crate的依赖mysqlclient-sys build失败,查看失败日志,同样是由于找不到libmysqlclient。

安装libmysqlclient

通过github上mysqlclient-sys的README中的描述,通过vcpkg命令安装libmysqlclient

vcpkg install libmysql:x64-windows-static-md

安装后查看已安装的内容,已安装好mysqlclient的lib文件

此时执行diesel setup不再报错,但是cargo build还会报错仍然是找不到libmysqlclient,原因是由于在cargo build时,需要指定mysqlclient.lib的位置。在环境变量中配置MYSQLCLIENT_LIB_DIRMYSQLCLIENT_VERSION

配置完环境变量后,不再报找不到libmysqlclient库,出现的新的问题。如:
error LNK2019: 无法解析的外部符号 __imp_CertOpenStore,函数 capi_open_store 中引用了该符号

熟悉C++的朋友对这些报错肯定不陌生,是比较常见的链接错误,在Visual Studio中可以通过项目配置附加依赖项解决。
在rust的build过程报错,同样需要在rust项目中进行配置。

通过缺少的依赖,确定是win10 SDK中的lib,分别是Crypt32.libUser32.lib,找到两个lib文件所在的目录(不同机器上版本号可能不同,替换自己即可)

C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\um\x64

在项目中创建build.rs文件,在文件中加入如下内容

fn main() {println!("cargo:rustc-link-search=native=C:\\Program Files (x86)\\Windows Kits\\10\\Lib\\10.0.19041.0\\um\\x64");println!("cargo:rustc-link-lib=crypt32");println!("cargo:rustc-link-lib=user32");
}

并在Cargo.toml文件的package中指定build.rs,如:

[package]
name = "diesel_demo"
version = "0.1.0"
edition = "2021"
build= "build.rs"

完成上述操作后,再次执行cargo build,成功build。

总结

至此,win10操作系统中,在rust项目diesel crate操作数据库已调通。后续根据diesel官网的例子,可以进行CRUD操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/62147.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

易优eyoucms网站无法安装,数据库文件版本号(无)与CMS源码版本号(v1.3.1)不一致,点击查看!

解决方法比较简单, 可以找历史版本, 使用同版本数据库或者源码进行安装, 安装完成后操作升级。扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Javascript等。承接:企业仿站、网站修改、网站改版、BUG修复、问题处…

易优eyoucms网站添加自定义新建字段的时候报错

根据提供的错误信息 SQLSTATE[42000]: Syntax error or access violation: 1118 Row size too large. The maximum row size for the used table type not counting BLOBs is 65535. You have to change some columns to TEXT or BLOBs,这个错误表明数据库表的行大小超过了 My…

易优eyoucms网站下载的系统导入就数据库出问题了,如何升级数据库?

数据库版本需要一样 数据库有新建模型的 需要打补丁包再导入扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Javascript等。承接:企业仿站、网站修改、网站改版、BUG修复、问题处理、二次开发、PSD转HTML、网站被黑、…

易优eyoucms网站登录报错:Array and string offset access syntax with curly braces is deprecated

根据提供的错误信息 Array and string offset access syntax with curly braces is deprecated,这个错误提示表明当前使用的 PHP 版本不支持使用大括号 {} 来访问数组和字符串偏移量。这种语法在 PHP 7.4 之后被标记为已弃用。 以下是一些可能的解决步骤: 1. 切换 PHP 版本 尝…

易优eyoucms网站报错,\\core\\library\\think\\db\\Connection.php

报错 \\\\core\\\\library\\\\think\\\\db\\\\Connection.php 第 380 行左右 数据表或视图不存在,请联系技术处理。[错误代码] SQLSTATE[42S02]: Base table or view not found: 1146 Table eyoucms.ey_channeltype doesnt exist 根据提供的错误信息 SQLSTATE[42S02]: Base ta…

高等数学 3.3 泰勒公式

泰勒(Taylor)中值定理1 如果函数 \(f(x)\) 在 \(x_0\) 处具有 \(n\) 阶导数,那么存在 \(x_0\) 的一个邻域,对于该领域内的任一 \(x\) ,有 \[f(x) = f(x_0) + f^{}(x_0)(x - x_0) + \cfrac{f^{}(x_0)}{2!}(x - x_0)^2 + \cdots + \cfrac{f^{(n)}(x_0)}{n!}(x - x_0)^n + R_…

腾讯云TDSQL数据库认证值得考吗?来看看TDSQL证书有什么用

国内市场上的数据库产品有不少,很多大企业都有自己的数据库产品,比如金仓的KingBase、华为的OpenGauss、阿里云的PolarDB、达梦DM数据库等等,腾讯云也有自己的数据库产品,叫做TDSQL数据库,TDSQL数据库有两个分支:基于MySQL版 + 基于PostgreSQL版。腾讯云是国内知名的云平…

Maximum execution time of 30 seconds exceeded

遇到 Maximum execution time of 30 seconds exceeded 这个错误,通常是因为 PHP 脚本执行时间超过了设定的最大执行时间限制。这可能是由于脚本执行了耗时的操作,例如长时间的数据库查询或其他资源密集型任务。 以下是一些解决步骤: 1. 增加最大执行时间限制 可以在 PHP 配置…