使用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, name, last_name, birth_day, email, city, address, password, cellphone) VALUES ('f1571b24-d88e-42b3-907e-13f46efabacc is', 'myname', 'lastname', '2020-12-12', 'email', 'Cali', 'Calle', 'mypassword', '12334455es')

看起来ExecContext方法没有像预期的那样解析参数

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

所以正确的查询应该是

INSERT INTO fakeclients (uuid, name, last_name, birth_day, email, city, address, password, cellphone) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)

最新更新