【问题标题】:Go SQL syntax error [duplicate]Go SQL语法错误[重复]
【发布时间】:2015-07-03 05:15:46
【问题描述】:

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

...
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 表中。但是,上面的 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');"

【问题讨论】:

    标签: postgresql go syntax-error prepared-statement


    【解决方案1】:

    您需要在 SQL 中使用 $1, $2, ... 作为占位符值。占位符字符取决于 DB,对于 Postgres,它们是 $X

    【讨论】:

      猜你喜欢
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 2017-05-29
      • 1970-01-01
      • 2015-02-02
      • 2015-08-06
      • 1970-01-01
      • 2016-12-30
      相关资源
      最近更新 更多