Go SQL 语法错误

Go SQL syntax error

我正在尝试使用 database/sql 在 Postgres table 中插入一行。我 运行ning 的代码看起来像

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

fname 是一个字符串。类似于 "image-name.png"image table 是由语句

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

在 运行 执行 CREATE TABLE 语句后,我可以跳转到 psql 并手动 运行

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

将适当的行添加到 image table。但是,上面的 INSERT Exec 调用始终错误 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');"

您需要在 SQL 中使用 $1、$2... 作为占位符值。占位符字符依赖于数据库,对于 Postgres,它们是 $X.