首页 > 解决方案 > postgres-rust 错误 42601(常见语法错误):正确发布变量表名?

问题描述

货物.toml:

[dependencies]
rocket = "0.4.4"
rocket_cors = "0.5.2"
postgres = "0.15.2"
r2d2_postgres = "0.14.0"
r2d2 = "0.8.0"
rocket_contrib = "0.4.4"
serde_json = "1.0.53"

我正在尝试使用以下格式在 rust-postgres 中发出变量表名!宏,以便 rust 可以处理连接本身。state.val.get().unwrap().execute()等价connection.execute()postgres::PostgresConnectionManager::new(). 这是片段:

let data_u8: &[u8] = data.peek();
let data_str: &str = str::from_utf8(&data_u8).unwrap();
let data_json: serde_json::Value = serde_json::from_str(&data_str).unwrap();

let table_name = data_json["broadcast_category"].to_string().replace(&['\"'][..], "");

let table_create = format!("CREATE TABLE IF NOT EXISTS category_{} (
            message         VARCHAR NOT NULL,
            name            VARCHAR NOT NULL,
                                                                   )", table_name);
let table_create_ref: &str = &table_create[..];

println!("Table Create fn: {}", table_create);

state.val.get().unwrap().execute(table_create_ref, &[]).unwrap();

我只在编译时收到以下错误:(data_json["broadcast_category"]serde_json::Value从用户的 POST 请求中收到的包装器的一部分。

错误:

thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: Error(Db(DbError { severity: "ERROR", parsed_severity: Some(Error), code: SqlState("42601"), message: "syntax error at or near \"$1\"", detail: None, hint: None, position: Some(Normal(59)), where_: None, schema: None, table: None, column: None, datatype: None, constraint: None, file: Some("scan.l"), line: Some(1133), routine: Some("scanner_yyerror") }))', src\main.rs:60:9

** src\main.rs:60:9 =state.val.get().unwrap().execute(table_create_ref, &[]).unwrap();

一如既往,感谢您的努力和支持,我们感谢您对社区的参与。

标签: postgresqlrust

解决方案


推荐阅读