问题标签 [rust-sqlx]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
rust - actix-session、sqlx、async-graphql 的错误问题
我正在尝试在 actix Web 应用程序中创建一个 graphql 解析器(使用 async-graphql)。我正在做一个 me 查询,我从会话中获取用户 ID,并从数据库中获取用户。这是代码中最相关的部分
但我得到了错误
我应该怎么办?无论如何,我也尝试过错误,但没有运气。我认为错误与 sqlx 的东西有关,因为当我删除该query_as
部分时,错误就消失了。
相关的依赖是
如果有任何帮助,可以在这里找到整个仓库https://github.com/SorenHolstHansen/full-stack-starter
rust - cargo sqlx prepare 生成存根文件——即使启用了“离线”功能
我正在使用一些 sqlx::query!和 sqlx::query_as!我的项目编译得很好。但是当我运行 cargo sqlx prepare 时,我首先得到错误:
然后当我用“---lib”运行它时,我得到:
我用--bin 得到了类似的输出。
我在这里做错了什么?
rust - 如何使用 Rocket 在 FromRequest 实现中获取状态?
我初始化了一个 Mutex< Pool<Postgres>>实例并将其传递给实例上的管理方法Rocket
,以便访问我的控制器上的数据库。我通常做的是:
这很酷,但这是我的问题:我写了一个结构如下......
...而且我实际上想将它用作请求保护,以便客户端在没有提供正确凭据的情况下无法访问控制器。
Rocket 的官方指南告诉实现FromRequest特征,以便可以将其解析为警卫。
但是,为了初始化一个User
实例,我需要在这个FromRequest特征中获取一个PoolConnection。我已经深入研究了 Rocket 的 API 文档,似乎FromRequest 上的请求参数有一个名为 Rocket 的方法,它返回一个实例,并且通过它,我可以访问 state。Rocket<Orbit>
但是,问题是state方法返回&Mutex<Pool<Postgres>>
,这是一个不可变的引用,所以我不能用它对数据库做任何操作。
我已经走了这么远,想问是否有人知道Mutex<Pool<Postgres>>
无需参考即可访问的方法。
提前致谢。
我走了多远
下面是我如何实现FromRequest。
环境
- 锈病 1.55.0
- 火箭 0.5.0-rc.1 具有功能
default
和json
- sqlx 0.5.7 的特性
runtime-tokio-native-tls
,all-types
和postgres
migrate
rust - 当函数输出被宏修复时传播不同的错误
我是 rust 新手,在传播不同的错误类型(在本例中来自 actix 和 sqlx)时遇到错误。
我看到类似的问题可以通过将函数的返回更改为适当的类型来解决,或者更改为这些问题中不同可能错误的枚举:
但在这种情况下,我似乎因为宏而不得不保持相同的结果#[actix_web::main]
,所以这似乎不是一个选择。
在这种情况下,解决办法是什么?我尝试替换-> std::io::Result<()>
为-> anyhow::Result<()>
,但出现类型不匹配的错误。我也用 实现了我自己的枚举thiserror
,但发生了同样的错误。
我的代码是下一个:
这是我得到的错误:
如果它有用,这是我的Cargo.toml
:
rust - rust sqlx-cli:如何为测试中的查询准备离线模式
我在测试中使用了一些https://github.com/launchbadge/sqlx query!
宏,我需要能够cargo sqlx prepare
为它们运行,以便我的 IDE 可以扩展宏并提供类型信息(自动完成等)。
但是如果我只是运行cargo sqlx prepare
,后面的所有代码#[cfg(test)]
都会被忽略。
我怎样才能告诉 cargo/sqlx 也分析我的测试?
sql-server - SQLx 到 Mssql 连接字符串
我正在学习 rust,并且我已经使用 Rocket 编写了我的第一个非常简单的 API。现在我想将我的服务器连接到我在 MSFT Azure 上的现有数据库。我很难找到有关 Mssql 如何工作的示例,SQLx 存储库仅包含 Postgres 和 MySQL 的示例。
Azure 门户上没有可用于 rust 的连接字符串,因此我尝试了 Go 和 ODBC 的不同版本:
这给出了一个Error: Configuration(RelativeUrlWithoutBase)
,所以我认为 SQLx 需要一个类似的连接字符串"postgres://..."
,但我无法为 mssql 找到这个字符串。
rust - 使用 SQLx 连接到 SQL Server
我无法通过 SQLx 库访问托管在 Azure 上的 SQL Server 数据库。
我可以使用 pymssql 连接到我的数据库:
因此,我假设我在 Azure 门户中的设置都是正确的,问题确实出在我的 SQLx 代码上。
使用相同的凭据,我尝试连接到数据库:
然而这导致
错误:Io(种类(ConnectionAborted))
并且根据rust std::io 错误文档,这个错误意味着:
连接被远程服务器中止(终止)
我想知道这个错误消息是否准确,因为我不知道为什么遥控器会终止连接。此外,这些调用不会显示在指标选项卡中,因此我认为这些请求从未到达服务器。
我正在像这样导入 tokio 和 sqlx 板条箱:
有谁知道这个错误是什么意思/我做错了什么?