2016-02-12 39 views
0

插入我想执行下列原始SQL与科尔马:原始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 

想不通有什么问题。任何人曾经与科尔马插入过?

的PostgreSQL 9.5 +科尔马0.4.2

+0

参数不能像那样工作,您不能将sql的部分(或列名称)作为参数。 –

+0

你能否详细介绍一下? – walkthroughthecode

回答

1

只有值可被用作在一个准备好的语句参数。因此,要使其工作:

INSERT INTO events (column) VALUES (?) 

如果你想要像你一样,你必须自己准备的SQL字符串,并确保你没有一个SQL注入上班吧。 请参阅manual