Postgres returns []uint8 而不是 []integer
Postgres returns []uint8 instead of []integer
我正在将一个整数数组保存到 PostgreSQL table,并且在尝试检索它时,我总是得到 []uint8 而不是 []int。
我尝试使用 []integer、[]bigint、[]smallint。没有任何作用。
该数组最多代表四项,每一项在1-100之间,无浮点数。
我正在使用 Go,我有一个 []int 对象,这是字段:
Quantity []int `json:"quantity" db:"quantity"`
我正在尝试修复它,但找不到使 PostgreSQL 成为 return 一个 []int.
的方法
所有其他 table 字段工作得很好。 Quantity
字段的类型是 integer[]
这是插入查询:
"INSERT INTO products (product_id, name, manufacturer, image_url, quantity, amount, notes, store_id, store_name, owner_id) VALUES (, , , , , , , , , )", 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 object
更改为 []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 for pq.Array()
also or implement Scanner 界面。对于整数,您可以使用 []sql.NullInt64
或 []int64
。但最好为 Scanner 和 Valuer 接口使用相同的受支持类型。
查找更多详细信息here。
我正在将一个整数数组保存到 PostgreSQL table,并且在尝试检索它时,我总是得到 []uint8 而不是 []int。 我尝试使用 []integer、[]bigint、[]smallint。没有任何作用。 该数组最多代表四项,每一项在1-100之间,无浮点数。
我正在使用 Go,我有一个 []int 对象,这是字段:
Quantity []int `json:"quantity" db:"quantity"`
我正在尝试修复它,但找不到使 PostgreSQL 成为 return 一个 []int.
的方法所有其他 table 字段工作得很好。 Quantity
字段的类型是 integer[]
这是插入查询:
"INSERT INTO products (product_id, name, manufacturer, image_url, quantity, amount, notes, store_id, store_name, owner_id) VALUES (, , , , , , , , , )", 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 object
更改为 []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 for pq.Array()
also or implement Scanner 界面。对于整数,您可以使用 []sql.NullInt64
或 []int64
。但最好为 Scanner 和 Valuer 接口使用相同的受支持类型。
查找更多详细信息here。