【已解决】golang gorm查询: 数据库有数据,但查出来都是零值?

gorm查询有数据,结果都是零值(只有id有值),结果如下,First和Find方法结果都是这样

{"ID":2,"ProjectID":"","PageID":"","Remark":"","PageStatus":"","Title":"","CreatedAt":"0001-01-01T00:00:00Z","UpdatedAt":"0001-01-01T00:00:00Z","CreatedBy":"","UpdatedBy":"","Content":"","PageData":"","PageVersion":0}

应该是哪里犯了低级错误,但一直没盯出来,代码如下,调用

// Page 结构体代表 PAGES 表
type Page struct {
    ID          int64     `gorm:"column:id;primary_key;AUTO_INCREMENT;NOT NULL;comment:'自增ID,主键'"`
    ProjectID   string    `gorm:"column:project_id;NOT NULL;comment:'项目ID,唯一且不为空'"`
    PageID      string    `gorm:"column:page_id;NOT NULL;comment:'页面ID,唯一且不为空'"`
    Remark      string    `gorm:"column:remark;comment:'页面描述'"`
    PageStatus  string    `gorm:"column:page_status;comment:'页面状态 publish 发布状态;modify 编辑状态'"`
    Title       string    `gorm:"column:title;comment:'页面标题'"`
    CreatedAt   time.Time `gorm:"column:created_at;default:current_timestamp;comment:'记录创建时间,自动生成当前时间戳'"`
    UpdatedAt   time.Time `gorm:"column:updated_at;default:current_timestamp on update current_timestamp;comment:'记录更新时间,自动生成当前时间戳,每次更新自动更新为当前时间'"`
    CreatedBy   string    `gorm:"column:created_by;comment:'创建人'"`
    UpdatedBy   string    `gorm:"column:updated_by;comment:'最后修改人'"`
    Content     string    `gorm:"column:content;comment:'页面内容,JSON格式'"`
    PageData    string    `gorm:"column:page_data;comment:'页面数据,JSON格式'"`
    PageVersion int       `gorm:"column:page_version;NOT NULL;comment:'页面版本号'"`
}

func (p *Page) TableName() string {
    return "pages"
}

    

执行代码如下

var page Page
err := db.Default().First(&page, id).Error
if err != nil {
return nil, err
}

First 和Find都是这个情况,如果查一个id不存在的,结果确实是不存在不会给上面这种零值


更新:找到原因了,确实是低级错误,上述结构体是让chatgpt自动生成的,数据库设计的时候,字段名是全大写的,生成的时候column写成了小写,一直没盯出来

阅读 4.6k
1 个回答

找到原因了,是低级错误,上述结构体是让chatgpt自动生成的,数据库设计的时候,字段名是全大写的,生成的时候column写成了小写,一直没盯出来

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏