0
測試數據:得到PostgreSQL數組結構與StructScan
CREATE TABLE test (id int, data text[])
INSERT INTO test(id, data) VALUES(1, '{a,b,c}')
Go代碼。首先 - 一個工作得很好:
func main() {
db, _ := sqlx.Open("postgres", "user=postgres dbname=test sslmode=disable")
var id int
var asSlice []string
err := db.QueryRowx(`SELECT id, data FROM test WHERE data @> ARRAY['b']`).Scan(&id, pq.Array(&asSlice))
if err != nil {
log.Fatal(err)
}
fmt.Println(id, asSlice)
}
我得到1 [a b c]
如預期。使用StructScan
type MyStruct struct {
Id int
Data []string
}
func main() {
db, _ := sqlx.Open("postgres", "user=postgres dbname=test sslmode=disable")
var testStruct MyStruct
err := db.QueryRowx(`SELECT id, data FROM test WHERE data @> ARRAY['b']`).StructScan(&testStruct)
if err != nil {
log.Fatal(err)
}
fmt.Println(testStruct)
}
sql: Scan error on column index 1: unsupported Scan, storing driver.Value type []uint8 into type *[]string
我想這意味着SQLX不知道PostgreSQL的陣列,並且不使用PQ - 但在這裏我手動分配結果的變量現在
,到不正常的部分。內部陣列。
我該怎麼辦?也許我做錯了什麼?或者,也許我應該手動應用pq.Array?如果是這樣 - 如何?
@Melvin 「預期結構卻得到了片」。我只查詢一行。所以不是這樣。 – Davinel