登录
首页 >  Golang >  Go问答

使用Golang和PostgreSQL存储Gob数据

来源:stackoverflow

时间:2024-03-06 18:00:28 101浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《使用Golang和PostgreSQL存储Gob数据》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

问题内容

我正在尝试使用 encoding/gob 将编码数据从 golang 存储到 postgres 中。我也在用 gorm。

首先,使用发送表单数据

if err := json.newdecoder(r.body).decode(model); err != nil {
  http.error(w, err.error(), http.statusbadrequest)
  return
}

当前 client_encoding 在 postgres 数据库中设置为 utf8。这是我用来编码的内容:

type payload struct {
    Key     []byte
    Nonce   *[nonceLength]byte
    Message []byte
}

// Encrypt message
p.Message = secretbox.Seal(p.Message, plaintext, p.Nonce, key) // key set prior to this

buf := &bytes.Buffer{}
if err := gob.NewEncoder(buf).Encode(p); err != nil {
    return nil, err
}

return buf.Bytes(), nil

然后我存储 string(buf.bytes()) ,它存储在当前为字符串类型的数据库列中。现在我是编码方面的新手,我认为 gob 只是对我的数据库有不同的编码。我在控制台中收到此错误:

(pq: 编码“utf8”的字节序列无效: 0xff)

我一直遵循加密/解密的要点: https://gist.github.com/fuzzyami/f3a7231037166117a6fef9607960aee7

根据我所读到的内容,我不应该将结构编码到数据库中,在本例中为 p,除非使用 gob。如果我错了,请纠正我(目前找不到资源)。

有人能够指出我在 postgres 中存储这些数据并稍后解密的正确方向吗?我显然不了解编码过程,也不完全确定从哪里开始阅读资源,因此感谢任何帮助!


解决方案


在postgresql中使用bytea列来存储[]byte,并跳过到string的转换。

今天关于《使用Golang和PostgreSQL存储Gob数据》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

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