1

我正在从文件上传中收集元数据,并插入到数据库表中。结构是这样的:

// 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),
}

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

在 &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)

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

4

1 回答 1

2

您可以将其添加db tag到您的结构中:

 Owner string `db:"owner"`

然后在插入:

...VALUES (:owner, ....
于 2020-02-05T03:08:19.723 回答