猿问

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

我创建了一个在postgres数据库上执行查询的func。我使用驱动程序 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 方法无法按预期解析参数


隔江千里
浏览 88回答 1
1回答

当年话下

解决后,对于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)
随时随地看视频慕课网APP

相关分类

Go
我要回答