我正在使用 Go 在 PostgreSQL 数据库上执行查询。请注意,在 DB 中id是 type bigint。db.Exec("UPDATE tags SET association_count = association_count - 1 WHERE id=?;", id)运行此代码时,出现 SQL 错误operator does not exist: bigint =?据我所知,这是由id和之间的输入不匹配引起的?。我尝试过使用,::但它会引发错误,并且没有发现任何关于此的内容。有趣的是,如果有空格,就像id = ?它会引发一般语法错误。知道如何投射或解决这个问题吗?
1 回答
临摹微笑
TA贡献1982条经验 获得超2个赞
Postgres$#用于占位符postgres docs
创建预准备语句时,按位置引用参数,使用 $1、$2 等。可以选择指定相应的参数数据类型列表。如果未指定参数的数据类型或将其声明为未知,则从使用参数的上下文推断类型(如果可能)。执行语句时,请在 EXECUTE 语句中指定这些参数的实际值。有关详细信息,请参阅执行。
所以试试
result, err := db.Exec(`
UPDATE tags
SET association_count = association_count - 1
WHERE id=$1;`, id
)
这是结果的样子
更新: a_horse_with_no_name提出了一个很好的观点。这取决于您使用的客户端库。我认为它是pq ,因为它在 golang 中的 postgres 中很流行。
- 1 回答
- 0 关注
- 487 浏览
添加回答
举报
0/150
提交
取消
