0

我想用 Korma 执行以下原始 SQL:

k/exec-raw
 ["INSERT INTO events ?, VALUES ? ON CONFLICT (id) DO UPDATE SET title = EXCLUDED.title;" [keys values]]

参数等于:

keys (str "(" (keys->str res) ")")
values (str "(" (serialize (merge res) ", ") ")" )

两者都评估以纠正字符串并在 repl 中工作。

但是在运行时我在 psql 控制台中有以下错误:

ERROR:  syntax error at or near "$1" at character 20
STATEMENT:  INSERT INTO events $1, VALUES $2 ON CONFLICT (id) DO UPDATE SET title = EXCLUDED.title

无法弄清楚是什么问题。有人用 Korma 做过插入吗?

PostgreSQL 9.5 + 科尔马 0.4.2

4

1 回答 1

1

只有值可以用作准备好的语句中的参数。所以要让它工作:

INSERT INTO events (column) VALUES (?)

如果你想像你一样工作,你必须自己准备 sql 字符串并确保你没有 sql 注入。请看说明书

于 2016-02-12T19:50:13.400 回答