【发布时间】:2017-02-21 07:45:36
【问题描述】:
我正在尝试更新特定行的 Jsonb 列值。 我运行了查询
UPDATE instruction.file SET "details" = (jsonb_set("details",'{"UploadBy"}','"test@test.com"'::jsonb, true)) WHERE id=820;
这在 pgAdmin3 中运行良好。
当我尝试在我的 Go 代码中做同样的事情时。我收到错误消息:“pq:json 类型的输入语法无效”
我的 Go 代码:
func main() {
uname := "test@test.com"
err := Init() //Db init
if err != nil {
fmt.Println("Error", err)
return
}
result, err1 := Db.Exec("UPDATE instruction.file SET \"details\" = (jsonb_set(\"details\",'{\"UploadBy\"}',$1::jsonb, true)) WHERE id=$2", uname, "820")
if err1 != nil {
fmt.Println("Error", err1)
return
}
n, err1 := result.RowsAffected()
if err1 != nil {
fmt.Println("Error", err1)
return
}
if n != 1 {
err1 = errors.New("Unable to update instruction.file")
fmt.Println("Error", err1)
return
}
fmt.Println("Success")
return
}
【问题讨论】:
-
Db.Exec('UPDATE instruction.file SET "details" = (jsonb_set("details",'{"UploadBy"}',$1::jsonb, true)) WHERE id=$2', uname, "820")你当然试过了,错误是一样的?.. -
是的。我收到相同的错误(json 类型的输入语法无效)。知道如何解决这个问题吗?
-
不是真的...似乎 go 想要将 smth 转换为 json?..
-
提示:包含引号的字符串文字最好用反引号 (
`) 分隔。它避免了常见的语法错误,至少使您的代码更易于阅读
标签: postgresql go