【发布时间】:2022-08-21 20:29:06
【问题描述】:
我们如何使用 GORM 和 postgresql 从带有 inet 数据类型的表中插入和选择 IP 地址?
这是我的模型
import (
\"github.com/jackc/pgtype\"
)
...
ClientIp pgtype.Inet `json:\"client_ip\" gorm:\"type:inet;not null\"`
...
我正在尝试解析字符串格式的 IP 地址以在 postgresql 数据库中键入 pgtype.Inet
插入数据库时像这样
import (
\"net\"
)
...
ClientIp: net.ParseIP(c.IP()),
...
我们被告知parse the ip using net package,但这是错误的
cannot use net.ParseIP(c.IP()) (type net.IP) as type pgtype.Inet in field value
我也尝试过为模型使用net 包
import (
\"net\"
)
...
ClientIp net.IP `json:\"client_ip\" gorm:\"type:inet;not null\"`
...
但不断收到此错误
sql: Scan error on column index 16, name \"client_ip\": unsupported Scan, storing driver.Value type string into type *net.IP
所以我们如何使用 GORM 在 postgresql 中存储 inet 值?
-
不要使用 gorm,因为这里也提到了 github.com/go-gorm/gorm/issues/3150
-
我需要导入另一个包吗?我看到了这个github.com/jackc/pgx/issues/914,但不确定我需要添加/删除什么才能让它与 gorm 一起使用
-
@kostix 更新了问题,提供了正在使用的软件包的更多详细信息。如果我需要添加更多包,请告诉我。谢谢
-
您是否尝试过实际阅读
pgtype.Inet.Set的源代码?它返回什么?你明白它是如何工作的吗?我的意思是,作为 SO 的志愿者(是的,这是一个可以让您获得无偿帮助的资源),我只愿意帮助完成有趣的任务,而不是辅导特定语言的基础知识或阅读现成的给你的源代码。这对我来说并不感兴趣,并且与任何无偿帮助一样,这是“接受或离开”的事情。你以为我帮不上忙?我不同意,但没关系:如果你不想举手帮助自己,那就顺其自然吧。
标签: sql postgresql go ip-address go-gorm