登录
首页 >  Golang >  Go问答

使用 Go/SQLX 找不到存在的结构属性

来源:stackoverflow

时间:2024-04-17 22:09:34 439浏览 收藏

最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《使用 Go/SQLX 找不到存在的结构属性》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~

问题内容

我正在从文件上传中收集元数据,并将其插入到数据库表中。结构如下:

// file metadata struct
type metadata struct {
    owner       string
    filerows    int64
    filesize    string
    filename    string
    fileuuid    string
    lastupdated string
}

这是我如何填充对结构的引用:

metadatarow := metadata{
    owner:       "fake name",
    filerows:    (int64)(count - 1),
    filesize:    filesize,
    filename:    filename,
    fileuuid:    handle,
    lastupdated: time.now().format(time.rfc822z),
}

我的问题是,当我尝试将此结构引用插入我的数据库时,我收到一条错误消息:

在 &processor.metadata{owner:"fake name", filerows:1499, filesize:"308.9 kb", filename:"small-file.csv", fileuuid:"1234567890qwerty", lastupdated:"30 jan 20 中找不到名称所有者21:13 +0000"}

现在,我们可以清楚地看到,owner 存在于结构中,并且它有一个值,其他结构也是如此。我不确定查询分配是否在第一次查找时失败,并且 panic 在那里,但我无法通过这个来查看其他查询是否也失败。这是我的 sqlx namedexec,因为我的 struct 引用或绑定可能存在问题?

// execute transaction
_, err = tx.NamedExec(`
    INSERT INTO file_metadata (
        owner,
        file_rows,
        file_size,
        file_name,
        file_uuid,
        last_updated
    ) VALUES (
        :Owner,
        :FileRows,
        :FileSize,
        :FileName,
        :FileUuid,
        :LastUpdated
    )
`, &metaDataRow)

我希望这是一个简单的修复,边界打字错误。


解决方案


您可以将 db 标签 添加到您的结构中:

owner string `db:"owner"`

然后插入:

...VALUES (:owner, ....

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

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