2015-07-02 2 views
2

Я пытаюсь вставить строку в таблицу Postgres, используя database/sql. Код я бегу выглядитОшибка синтаксиса SQL SQL

... 
res, err := db.Exec("INSERT INTO image(name) VALUES(?);", fname) 
if err != nil { 
    return err 
} 
... 

fname является строкой. Что-то вроде "image-name.png". Таблица image была создана в заявлении

... 
_, err := db.Exec("CREATE TABLE image (id SERIAL, name VARCHAR)") 
... 

После выполнения этого CREATE TABLE заявления, я могу прыгать в psql и вручную запустить

INSERT INTO image(name) VALUES('some-random-image.jpg'); 

с соответствующей строкой добавляются к image таблице. Тем не менее, вызывают надстрочные ошибки с pq: syntax error at or near ")".

Может ли кто-нибудь указать, что я здесь делаю неправильно?

Также, в качестве продолжения, есть ли способ увидеть результат форматирования оператора в go? Я имею в виду что-то вроде func Preview (template string, args...) string таким образом, что

Preview("INSERT INTO tbl(col) VALUES(?);", "test") 
    => "INSERT INTO tbl(col) VALUES('test');" 

ответ

3

Вы должны использовать $ 1, $ 2, ... в качестве значений заполнителей в вашем SQL. Символы-заполнители зависят от БД, а для Postgres - $X.

Смежные вопросы