登录
首页 >  Golang >  Go问答

在类型*guid.GUID中存储driver.Value类型uint8的值是不被支持的

来源:stackoverflow

时间:2024-02-07 18:00:24 333浏览 收藏

学习知识要善于思考,思考,再思考!今天golang学习网小编就给大家带来《在类型*guid.GUID中存储driver.Value类型uint8的值是不被支持的》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

问题内容

我使用 golang 和 sql server。 我在 golang 中的结构:

type Role struct {
Id          guid.GUID `gorm:"primaryKey;column:Id;type:uniqueidentifier" json:"id"`
RoleName    string    `gorm:"column:RoleName;not null;unique" json:"roleName"`
IsEnable    bool      `gorm:"column:IsEnable" json:"isEnable"`
Permissions []RolePermission }

我使用gorm查询数据但收到错误:

不支持 扫描,将 driver.value 类型 []uint8 存储到类型 *guid.guid 中。

之前用过uuid,但是查询时id数据错误(guid转uuid)。

有什么方法可以使用 golang 和 sql 服务器来存储和使用 guid


正确答案


早期版本的 go-gorm (v0.2) 包括 UUID/GUID support for SQLTag,其中 isUUID() 对类型名称(“uuid”或“guid”)进行测试。

但当前的 go-gorm v2.0 中不再存在该代码。

您可能需要实现 custom Data Type Scanner / Valuer,或使用 google/uuid 之类的:

import (
  "github.com/google/uuid"
  "github.com/lib/pq"
)

type Post struct {
  ID     uuid.UUID `gorm:"type:uuid;default:uuid_generate_v4()"`
  Title  string
  Tags   pq.StringArray `gorm:"type:text[]"`
}

今天关于《在类型*guid.GUID中存储driver.Value类型uint8的值是不被支持的》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>