ToB企服应用市场:ToB评测及商务社交产业平台
标题:
在Windows10中使用rust的diesel库
[打印本页]
作者:
莫张周刘王
时间:
2024-9-19 15:44
标题:
在Windows10中使用rust的diesel库
介绍
最近在学习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_DIR
和
MYSQLCLIENT_VERSION
。
设置完情况变量后,不再报找不到libmysqlclient库,出现的新的问题。如:
error LNK2019: 无法解析的外部符号 __imp_CertOpenStore,函数 capi_open_store 中引用了该符号
认识C++的朋侪对这些报错肯定不陌生,是比较常见的链接错误,在Visual Studio中可以通过项目设置附加依赖项办理。
在rust的build过程报错,同样需要在rust项目中进行设置。
通过缺少的依赖,确定是win10 SDK中的lib,分别是
Crypt32.lib
和
User32.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操作。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4