2016-02-12 3 views
0

Я хочу выполнить следующие необработанного SQL с Корме:Raw SQL вставки с Корме

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

с Params равным:

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