【发布时间】:2023-03-08 13:34:01
【问题描述】:
我们有一个使用 Postgres 作为后端数据库的 go 应用程序。 我们使用https://github.com/jmoiron/sqlx 与数据库通信。 从表中读取所有行的代码如下:
rows, err := repo.db.Queryx(ListNodesQuery)
if err != nil {
repo.logger.Log("method", "ListNodes", "error", err)
return nil, err
}
r := []*Node{}
for rows.Next() {
var n Node
err = rows.StructScan(&n)
}
在数据库中添加新列后,代码按预期错误如下
missing destination name type in *Node
因为 db 表有更多的列。更改代码以同时更新结构当然是不可能的。
我发现关闭此错误的一种方法是使用 db.Unsafe 记录的here
还有其他惯用的方法来处理这种情况吗?
【问题讨论】:
-
您是否使用
SELECT * FROM...上的变体从表中查询?更改此项以明确列出感兴趣的列名。您可以在移动丢弃的数据时节省浪费的数据库和网络资源,并且可以在代码准备好接收来自其他列的值时显式更新查询。 -
嗯...好点
标签: sql postgresql go sqlx