rust actix-webv2.0 diesel開發及相關問題解決

cargo.toml

[package]
name = "book-of-changes"
version = "0.1.0"
authors = ["litttley "]
edition = "2018"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
actix-rt="1.1.1"
actix-web="2.0.0"
env_logger="0.6"
dotenv = "0.15"

diesel = { version = "1.4.5", features = ["mysql", "r2d2","chrono"] }

數據庫連接池創建

use diesel::mysql::MysqlConnection;
use diesel::r2d2::{ConnectionManager, Pool, PoolError, PooledConnection};

pub type MysqlPool = Pool<ConnectionManager<MysqlConnection>>;
//pub type MySqlPooledConnection = PooledConnection<ConnectionManager<MysqlConnection>>;

pub fn connect() -> MysqlPool {
    let connspec = dotenv::var("DATABASE_URL").expect("DATABASE_URL must be set");
    let manager = ConnectionManager::<MysqlConnection>::new(connspec);
    Pool::builder().build(manager).expect("Error")
}



diesel mysql驅動安裝方法參照

cargo install diesel_cli --no-default-features --features mysql
cd api_server
echo "DATABASE_URL=mysql://root@localhost:3306/test_db" > .env

問題 1

could not find native static library `mysqlclient`, perhaps an -L flag is missing?
解決辦法

1.下載windows mysql connector

下載地址:https://downloads.mysql.com/archives/c-c/

2、添加windows環境變量

MYSQLCLIENT_LIB_DIR=D:\soft\mysql-connector-c-6.1.11\lib\vs14

然後再重新執行cargo install diesel_cli --no-default-features --features mysql
建議在git-bash 窗口中執行,cmd窗口有可能報錯
在這裏插入圖片描述
在這裏插入圖片描述如果之前用過postgres的數據庫,此時生成diesel.exe會替換爲mysql版本的
此時cargo build 編譯項目還是會報類似錯誤,可以用cargo clean 清理後再重新編譯解決,如果還有問題就將 D:\soft\mysql-connector-c-6.1.11\lib\vs14 mysqlclient.lib 複製到 D:\soft\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.15.26726\lib\x64目錄下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章