【问题标题】:pq: syntax error at or near "$1" Postgres + gopq:“$1”处或附近的语法错误 Postgres + go
【发布时间】:2021-07-13 10:11:51
【问题描述】:

我在这里做错了什么?也尝试引用 new_name ,仍然显示错误:pq: syntax error at or near "$1" Postgres + go

func ChangeDBname(new_name string) {

oldname := "intern"
quoted := pq.QuoteIdentifier(oldname)
_, e1 := db.Exec(fmt.Sprintf("ALTER TABLE %s RENAME TO $1",quoted) , new_name)
if e1 != nil {
    fmt.Println("Eroor in change name")
    log.Fatal(e1.Error())
} else {
    fmt.Println("Table name changed to", new_name)
}

}

【问题讨论】:

  • 您不能使用参数占位符作为标识符。您可以将它们用于值,但不能用于名称。例如,您不能将它们用于表名列名等。

标签: postgresql go


【解决方案1】:

表名不是一个值。所以 PostgreSQL 解析器不希望在这个 DDL 中有一个占位符。

检查一下:

db.Exec(fmt.Sprintf("ALTER TABLE %s RENAME TO %s",pq.QuoteIdentifier(oldname), pq.QuoteIdentifier(new_name)))

【讨论】:

  • 但我想注入查询,正常的刺痛工作
猜你喜欢
  • 2014-07-10
  • 2014-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-22
  • 2016-01-08
  • 2021-12-04
  • 2021-10-26
相关资源
最近更新 更多