【问题标题】:How to get an array from Postgresql database using Golang's GORM?如何使用 Golang 的 GORM 从 Postgresql 数据库中获取数组?
【发布时间】:2020-01-26 20:42:34
【问题描述】:

我正在尝试使用 Golang 的 jinzhu GORM 从 Postgresql 数据库中获取多个值。 我的查询可以返回无、一个或多个值。我希望它们保存到一个数组中 这是代码sn-p:

    var zones []string 
    d := db //database

    d.Raw(`SELECT
           DISTINCT reg.name
           FROM
           regions reg
           LEFT JOIN
           ad_regions adreg ON adreg.region_id = reg.id
           WHERE adreg.id = ?`, ID).Scan(&zones)

我也试过这样做

var zones []string
rows, _ := d2.Raw(`SELECT
                    DISTINCT reg.name
                    FROM
                    regions reg
                    LEFT JOIN
                    ad_regions adreg ON adreg.region_id = reg.id
                    WHERE adreg.id = ?`, ad.ID).Rows()
defer rows.Close()
for rows.Next() {
                var zone string
                rows.Scan(&zone)
                zones = append(zones, zone)
                }

我没有从查询中得到任何信息。 我究竟做错了什么? 谢谢!

【问题讨论】:

  • 检查 Rows() 和 Scan() 返回的错误。
  • 尝试制作PG数组?喜欢array_agg(...) from ...?
  • 尝试在Raw() 之前调用Debug() 以显示详细的响应信息
  • 感谢大家的帮助 :) 我尝试按照 Cerise Limon 的建议检查 Rows 错误,结果发现是我在数据库中的一个列的拼写错误。一个愚蠢的错误,很抱歉打扰 StackO 社区 :( 感谢您的帮助!P.S. 如果有人遇到这个问题,请听取 Cerise 的建议并使用带有“log.Fatal”功能的blog.golang.org/error-handling-and-go

标签: postgresql go go-gorm


【解决方案1】:

这是我的数据库查询中的拼写错误。列名错误。 Cerise Limon 的建议很有帮助。 如果有人遇到这个问题,只需检查Go's Error Handling 并使用 log.Fatal

【讨论】:

    猜你喜欢
    • 2021-11-05
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 2016-10-25
    • 2021-10-07
    • 1970-01-01
    相关资源
    最近更新 更多