pq:“$1”处或附近的语法错误 Postgres + go

问题描述 投票:0回答:2

我在这里做错了什么?也尝试引用 new_name ,仍然显示错误:pq:“$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
2个回答
4
投票

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

检查这个:

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

0
投票

不要使用标识符作为 SQL 查询的参数。

试试这个:

    oldName := "intern"
    query := fmt.Sprintf("ALTER TABLE %s RENAME TO %s", pq.QuoteIdentifier(oldName), pq.QuoteIdentifier(newName))

    _, err := db.Exec(query)
    if err != nil {
        fmt.Println("Error in change name")
        log.Fatal(err)
    } else {
        fmt.Println("Table name changed to", newName)
    }
© www.soinside.com 2019 - 2024. All rights reserved.