Rust 无法在 Rust 中为非标准查询(例如 CREATE VIEW)绑定 SQLx 中的参数

问题描述 投票:0回答:1

我在 Rust 中遇到了 SQLx 的问题,当尝试执行标准查询之外的查询(如 SELECT、INSERT、UPDATE 和 DELETE)时,参数绑定会失败。

// This query works fine with parameter binding
let result = sqlx::query("SELECT * FROM my_table WHERE column = $1")
.bind("123")
.fetch_all(&conn)
.await?;

// This doesn't
let result = sqlx::query("CREATE VIEW my_view AS SELECT * FROM my_table WHERE column = $1")
.bind("123")
.execute(&conn)
.await?;

它不会引发任何错误,并且允许我绑定参数。但是,PostgreSQL 没有收到它,导致出现以下错误:

there is no parameter $1

是否有另一种方法可以完成此任务,而无需将参数直接注入查询字符串?我担心与此相关的潜在安全风险。

postgresql rust sqlx
1个回答
0
投票

Postgres 不支持 DML 命令的参数。不幸的是,

CREATE VIEW AS SELECT
是DML命令。常用的DML命令 -
CREATE
DROP
ALTER
没有执行计划,那么执行的方式就不一样了

© www.soinside.com 2019 - 2024. All rights reserved.