You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust Rocket结合SQLx连接Azure MSSQL数据库的连接字符串配置问题

解决方法

错误原因

你遇到的Configuration(RelativeUrlWithoutBase)错误是因为SQLx的MSSQL驱动仅支持URL格式的连接字符串,不兼容你使用的ODBC风格键值对格式。

正确连接字符串写法

SQLx的MSSQL连接字符串统一使用mssql://作为前缀,标准格式如下:

mssql://<用户名>:<密码>@<服务器地址>:<端口>/<数据库名>?<可选参数>

适配你的Azure SQL场景的代码修改如下:

const SERVER: &str = "<mysqlserver>.database.windows.net";
const PORT: &str = "1433";
const USER: &str  = "sqladmin";
const PASSWORD: &str  = "<mypassword>";
const DATABASE: &str  = "<mydatabase>";

// 末尾加encrypt=strict适配Azure SQL强制加密要求
let conn_str = format!("mssql://{}:{}@{}:{}/{}?encrypt=strict", USER, PASSWORD, SERVER, PORT, DATABASE);
let conn = MssqlConnection::connect(&conn_str).await?;

额外注意事项

  • 如果密码中包含@、/、?、%等URL特殊字符,需要先对密码做URL编码后再拼接进连接串,避免解析错误。
  • 如果你使用的是本地未开启加密的MSSQL测试环境,可以将参数替换为encrypt=off。
  • 除了直接拼接字符串,你也可以使用MssqlConnectOptions结构体手动设置各配置项,避免字符串拼接的安全风险,对应配置如下:
use sqlx::mssql::{MssqlConnectOptions, MssqlEncrypt};

let options = MssqlConnectOptions::new()
    .host(SERVER)
    .port(PORT.parse().unwrap())
    .username(USER)
    .password(PASSWORD)
    .database(DATABASE)
    .encrypt(MssqlEncrypt::Strict);
let conn = MssqlConnection::connect_with(options).await?;

内容的提问来源于stack exchange,提问作者picklepick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 16:15:03