actix-web と sqlx を使おうとしてハマったこと
こんにちは、 @kz_morita です。
今回は,RustでAPIサーバーを作っていて,DB まわりを diesel から sqlx に移行しようとしたときにすこしつまづいたことがあったのでそのことをまとめます.
先に結論 sqlx と actix-web, actix-rt, tokio 周りの依存バージョンに注意する Cargo.toml で sqlx の fetures に runtime-actix-rustls など,rustls を使用すると,DSNにIPアドレスを利用できない -> native-tls を利用する 起こった問題 個人開発で,actix-web + diesel でAPIサーバーを作っていたのですが,sqlx が良さそうと聞いたのでそちらに移行することにしました.
https://github.com/launchbadge/sqlx 特に深く考えず sqlx の最新バージョンを入れようと思い以下のような Cargo.toml を書いていたところ実行時にエラーがでてはまりました.
[dependencies] actix-web = "3" actix-rt = "^1.1.1" sqlx = { version = "0.5", features = [ "runtime-actix-rustls", "mysql", "chrono" ] } 上記の状態でDBの接続周りのコードは以下のような感じです.
usedotenv::dotenv;usesqlx::mysql::MySqlPool;usestd::env;// ... letdatabase=env::var("MYSQL_DATABASE").expect("MYSQL_DATABASE is not set");letuser=env::var("MYSQL_USER").