问题标签 [rust-diesel]
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 - 为柴油模型定义结构时出现错误未定义类型或模块
我无法让柴油在 Rust 上运行。这个项目的背景是一个使用 postgres 作为服务器来保存分数和使用柴油访问 postgres 的分数统计系统。当我在 models.rs (命名Score
)中定义一个结构时,我得到这个错误:
schema.rs 的内容是:
这是我的models.rs:
我正在尝试使用 add_entry.rs 向其中添加条目:
在 main.rs 中,我有:
在connect.rs(与服务器连接)中,我有:
我的 Cargo.toml 的依赖部分的内容是
为了得到这个错误,我跑来diesel setup
设置一切,,,,diesel migration run
再次diesel migration redo
,diesel migration run
最后cargo build
。
我的完整代码可以在这个存储库中找到。
我应该怎么做才能消除这个错误?谢谢。
rust - 如何在 Diesel 中对 Postgres 数据库执行删除子查询?
我在 Postgres 数据库中有以下架构:
我正在尝试在 Diesel 中编写以下查询:
$VAR
是我的应用程序传递的变量。
我第一次尝试写这个是:
这可以编译,但不起作用:SELECT
ID 的语句始终返回 0。它与 A 中插入的任何记录都不匹配,即使我手动检查了它们是否存在。我确定我在匹配的方式上存在错误(&str
可能是&String
?),但我决定尝试不同的解决方案,因为我不喜欢这个解决方案,因为它必须针对数据库执行两个单独的语句.
我的第二次尝试如下所示:
这对我来说看起来更像 Diesel 惯用的(剧透警报,我几乎不知道框架)但果然,它没有编译:
当我意识到这似乎是一个微不足道的操作(删除本身)时,我正在研究上述特征,我最好寻求帮助。
如何正确编写惯用的 Diesel 代码来执行我要执行的删除语句?
sql - 使用派生可插入的浮点数
我从 Rust 中的柴油和火箭开始,在将浮动值插入数据库时遇到了问题。我的结构看起来像:
我得到这个错误:特征绑定f64: diesel::Expression
不满足标签:特征diesel::Expression
没有实现f64
,注意:需要因为对 impl 的diesel::expression::AsExpression<diesel::sql_types::Numeric>
要求f64
我读过柴油有点使用它自己的数据/SQL 类型,但我不知道如何声明一个浮点数。我还尝试使用带有类似错误消息的diesel::sql_types::Float。
database - 如何在生产中使用 Rocket 运行 Diesel 迁移?
我需要在生产环境中为基于 Rocket 的应用程序运行 Diesel 数据库迁移。通常有几种方法可以为数据库执行迁移:
- 在应用程序启动时。
- 与应用程序启动分开。
我更喜欢使用--migrate
应用程序二进制标志调用的第二个选项,但由于目标应用程序相当简单,第一种方法就可以了。
Diesel 问题跟踪器中有一个关于在生产中运行迁移的线程,并建议如何执行此操作:
- 添加
diesel_migrations
到您的依赖项- 在你的板条箱中加入一个
extern crate diesel_migrations
,并确保用它来装饰它#[macro_use]
- 在代码的开头,添加
embed_migrations!()
- 要运行迁移,请使用
embedded_migrations::run(&db_conn)
在main.rs
我做了:
这会导致错误:
如何解决?
rust - 当用户登录而不使用 N+1 查询时,将数据添加到 Diesel 结果
我有一个电影数据库,用户可以使用以下模型将电影标记为已观看和收藏:
我将如何处理我想列出添加到数据库中的 100 部最新电影并在用户登录时还包括每部电影的用户数据同时避免 N+1 查询问题的情况?
我想我可以为movies
表添加另一个结构,其中还包含可选的用户数据,但我不确定如何将它与 Diesel ORM 一起使用。
rust - 是否可以在柴油中使用没有主键的表?锈
我是 Rust 新手,我正在使用 Diesel 和 Actix-web 制作 API。我在 pgsql 和 mongodb 中有一个数据库,我仅将柴油 1.4.4用于pgsql。
首先,我做了一个测试,用它的表和主键创建了一个数据库,一切正常。但是,总会有一些表没有主键而只有外键。
我注意到 Diesel 只支持带有主键的表,但是如果您想使用没有主键而只有外键的表,有没有办法导入该表?手动可以吗?也就是说,在 schema.rs 和我的 models.rs 中定义它。
rust - 如何使用 Diesel 连接和 Gtk-rs 事件?
当在 gtk 条目中按下 Enter 键时,我正在尝试使用 Diesel 从数据库中获取对象。我的想法是在 main 函数中创建一个 Diesel SQLite 连接,然后在每次需要时借用它。
为此,我正在尝试使用一个非常简单的 MVC。这个想法是将连接传递给所有控制器并重用它。我知道这里需要一生。
编译时我得到这个:
这个错误是因为函数connect_activate
有一个静态参数:fn connect_activate<F: Fn(&Self) + 'static>
.
我不想在用户每次按下 Intro 键时使用返回连接的函数来初始化连接。相反,我想借用这种联系。
最有效的方法是什么?
非常感谢你。我希望你明白一切。
rust - 如何使用 Diesel 格式化 SQL 结果?
我正在使用 Diesel 使用 JOIN 查询 PostgreSQL 中的数据库:
我的模型:
结果符合预期,但我需要为sales::date_sale
pgadmin 中使用to_char(date_sale, 'dd/mm/YYYY')
.
是否可以to_char
在 Diesel 中使用,或者我可以通过什么方式修改 Diesel ORM 带给我的数据?
rust - 将 NixOS 升级到 20.03 后,具有柴油和 mysql 依赖项的板条箱不再针对 mariadb 进行编译
我的 crate 依赖于启用了该功能的柴油,在将我的系统从NixOS 19.09mysql
升级到 20.03 后不再编译。似乎唯一的重大变化是将包从 10.2.17 更新到 10.3.18。Rust 工具链等没有任何变化(它被静态固定到每晚2020-04-20)。mariadb-server
nix-shell
很长的编译器消息以:
我该怎么办?