使用 postgres 驱动程序在 golang 中使用参数执行查询时出错

问题描述

我创建了一个在 postgres 数据库上执行查询的函数。我使用的驱动程序 github.com/lib/pq

但是如果我运行这个:

_,err := repository.db.ExecContext(ctx,query,args...)

查询在哪里

INSERT INTO fakeclients (uuid,name,last_name,birth_day,email,city,address,password,cellphone) VALUES (?,?,?)

和 args 是具有此值及其类型的切片

f1571b24-d88e-42b3-907e-13f46efabacc is a string
myname is a string
lastname is a string
2020-12-12 is a string
email is a string
Cali is a string
Calle is a string
mypassword is a string
12334455es is a string

表是用这个属性创建的

create table if not exists fakeclients (
    id                text,corporate_account boolean,name              text,last_name         text,cellphone         text,birth_day         text,email             text,password          text,city              text,address           text,primary key (id)
);

执行这个查询的结果是

pq: syntax error at or near ","

但是如果我像这样在查询字符串中插入带有所有值的查询,它会起作用

INSERT INTO fakeclients (uuid,cellphone) VALUES ('f1571b24-d88e-42b3-907e-13f46efabacc is','myname','lastname','2020-12-12','email','Cali','Calle','mypassword','12334455es')

看起来 ExecContext 方法没有按预期解析参数

解决方法

已解决,对于 postgres,正确使用插值查询是使用 $1、$2、$3...

所以正确的查询是

help

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...