【问题标题】:Prepare statement using postgres and golang [duplicate]使用 postgres 和 golang 准备语句 [重复]
【发布时间】:2020-09-14 22:21:19
【问题描述】:

如何在 golang 上使用 sql.DB 正确创建准备语句?

type Repository struct {
    db *sql.DB
}

func NewRepository(db *sql.DB) {
    return Repository{db: db}
}


func (r Repository) Create() {
    stmt, err := r.db.Prepare("INSERT INTO mytable(age) VALUES(?)")
    if err != nil {
        log.Fatal(err.Error()) // "pq: syntax error at or near \")\""
    }
}

我看不到语法错误,我什至尝试复制“自动查询”

【问题讨论】:

  • 也许你需要在表名后面加一个空格?
  • @BurakSerdar 尝试使用空格但不起作用(同样的错误),我也尝试删除列定义...
  • 占位符语法可能因数据库/驱动程序而异,请尝试VALUES ($1)

标签: go


【解决方案1】:

this article 中所述,占位符语法可能因数据库而异。

对于 Postgres,它应该是 VALUES ($1)

【讨论】: