gpt4 book ai didi

postgresql - Postgres 返回 []uint8 而不是 []integer

转载 作者:行者123 更新时间:2023-12-01 20:23:29 28 4
gpt4 key购买 nike

我将一个整数数组保存到 PostgreSQL 表中,当尝试检索它时,我总是得到 []uint8 而不是 []int。我尝试使用 []integer、[]bigint、[]smallint。没有任何效果。该数组最多表示 4 项,每项介于 1-100 之间,无 float 。

我正在使用 Go,并且我有一个 []int 对象,这是字段:

Quantity []int `json:"quantity" db:"quantity"`

我正在尝试修复它,但找不到让 PostgreSQL 返回 []int 的方法。

所有其他表字段都运行良好。 Quantity 字段的类型为 integer[]

这是插入查询:

"INSERT INTO products (product_id, name, manufacturer, image_url, quantity, amount, notes, store_id, store_name, owner_id) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)", newProduct.UID, newProduct.Name, newProduct.Manufacturer, newProduct.Image, pq.Array(newProduct.Quantity), newProduct.Amount, newProduct.Notes, newProduct.StoreID, newProduct.StoreName, newProduct.OwnerID);

这就是我尝试获取数据的方式。

err := rows.Scan(&temp.ID, &temp.UID, &temp.Name, &temp.Manufacturer,
&temp.Image, &temp.Amount, &temp.Notes,
&temp.StoreID, &temp.OwnerID, &temp.StoreName, &temp.Quantity)

问题仅在于数量。如果我将 temp 对象 更改为 []uint8 而不是 []int,我确实会得到字节。

最佳答案

使用pq.Array(&temp.Quantity)

你存储的方式,你也必须以同样的方式检索。

err := rows.Scan(&temp.ID, &temp.UID, &temp.Name, &temp.Manufacturer,
&temp.Image, &temp.Amount, &temp.Notes,
&temp.StoreID, &temp.OwnerID, &temp.StoreName, pq.Array(&temp.Quantity))

你必须使用supported types对于 pq.Array() 也可以或实现 Scanner界面。对于整数,您可以使用 []sql.NullInt64[]int64。但最好对 Scanner 和 Valuer 接口(interface)使用相同支持的类型。

查找更多详细信息 here

关于postgresql - Postgres 返回 []uint8 而不是 []integer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61309332/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com