我有像 blow 這樣的 json 字段,我想將其存儲(chǔ)在數(shù)據(jù)庫中{ id: 1 name: "test entity 1" description: "a test entity for some guy's blog" status: "passed" web_url: "http://localhost:3000" jobs: [{ id: "1" name: "test1" status: "passed" }, { id: "2" name: "test2" status: "passed" }, { id: "3" name: "test3" status: "failed" }] }我繼續(xù)使用一種方法來創(chuàng)建表用途:CREATE TABLE test3 (id INT PRIMARY KEY, name VARCHAR, description VARCHAR, status VARCHAR, web_url VARCHAR, jobs JSON[]);和插入數(shù)據(jù)使用:sqlStatement := ` INSERT INTO jobs (id, name, description, status, web_url, jobs) VALUES ($1, $2, $3, $4, $5, $6) ON CONFLICT (id) DO UPDATE SET status = $4 RETURNING id` id := 0 err = database.Db.QueryRow(sqlStatement, y[i].ID, y[i].Name, y[i].Description, y[i].Status, y[i].WebURL, jobsdata).Scan(&id) if err != nil { panic(err) }但不會(huì)工作,需要幫助!獲取錯(cuò)誤:panic: sql: converting argument $6 type: unsupported type handler.Jobs, a slice of struct我想要的是:postgres=# SELECT * FROM test3;id | name | description | status | web_url | jobs ------+------------------------------------------+--------+---------+----------------------------------------------------------+---------------------------------------------------------- 1 | test entity 1 | a test entity for some guy's blog | passed | https://localhost:3000 | {id: "1",name: "test1", status: "passed"},{id: "2",name: "test2", status: "passed"},{id: "3",name: "test3", status: "failed"}
2 回答

LEATH
TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊
如錯(cuò)誤所示,您正在嘗試從不受支持的數(shù)據(jù)類型綁定第六個(gè)值,handler.Jobs
。你沒有告訴我們這個(gè)類型是什么,但是從錯(cuò)誤中可以看出它沒有實(shí)現(xiàn)接口driver.Valuer
,所以它不會(huì)工作,因?yàn)樗鼰o法知道如何向數(shù)據(jù)庫表示該值。
您需要通過Value()
向handler.Jobs
類型添加方法或使用不同的數(shù)據(jù)類型來實(shí)現(xiàn)該接口。

蠱毒傳說
TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超3個(gè)贊
sqlx在github.com/jmoiron/sqlx/types中有一個(gè)JSONText類型,它可以滿足您的需要。
- 2 回答
- 0 關(guān)注
- 169 瀏覽
添加回答
舉報(bào)
0/150
提交
取消