我是 golang 和 pgx 的新手,当我尝试运行一个简单的查询时遇到了问题。我在 postgres 中有下表。
CREATE TABLE users (
user_id BIGINT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
phone_number TEXT NOT NULL UNIQUE,
);
当我尝试运行以下查询时:
func sampleFunc(db dbClient){
number := "+111111111"
rows, err := db.Query(context.Background(), "SELECT user_id FROM users WHERE phone_number=$1::TEXT;", number)
if err != nil {
log.Println(err)
return false, err
}
}
我收到以下错误:无法将 [+111111111] 转换为文本。
编辑 03/05/2022
我应该注意,我将 包装pgxpool.Pool
在我自己的结构中,并且由于某种原因,当我直接使用 pgxpool 时实际上没有问题。
type dbClient interface {
Query(ctx context.Context, query string, args ...interface{}) (pgx.Rows, error)
}
type SQLClient struct {
Conn *pgxpool.Pool
}
func (db *SQLClient) Query(ctx context.Context, query string, args ...interface{}) (pgx.Rows, error) {
return db.Conn.Query(ctx, query, args)
}
我假设然后类型信息发生了一些事情,但仍然无法弄清楚如何修复它。
当我在 中打印args
类型信息时SQLClient.Query
,使用fmt.Println(reflect.TypeOf(args))
,我得到以下信息: []interface {}