首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sqlx写:断管

sqlx写:断管
EN

Stack Overflow用户
提问于 2020-11-19 01:37:18
回答 1查看 854关注 0票数 1

我正在尝试将一个巨大的文本更新到一个MariaDB表中,但是不断地获取broken pipe错误。该列具有longtext数据类型,从我的日志中看,该数据的大小为~1374069 bytes

我尝试将MaxConnLife更新到几个不同的值,比如wait_timeout的一半来自MariaDB,它被设置为28800 -> db.SetConnMaxLifetime(14400)

这就是我的DB conn看起来的样子

代码语言:javascript
复制
    loggerAdapter := zerologadapter.New(zerolog.New(os.Stdout))
    db := sqldblogger.OpenDriver(dsn, &mysql.MySQLDriver{}, loggerAdapter /*, using_default_options*/) // db is STILL *sql.DB

    db.SetConnMaxLifetime(14400)


    sqlxdb := sqlx.NewDb(db, "MySQL")

错误日志

代码语言:javascript
复制
{"level":"info","conn_id":"66g4YSswso2QqsQE","duration":0.289406,"query":"UPDATE campaigns SET vendor_products=? WHERE id=?","stmt_id":"Mygo_MuAaIuGYwe2","time":1605747034,"message":"PrepareContext"} 
[mysql] 2020/11/19 00:50:34 packets.go:145: write tcp IP->IP: write: broken pipe 
{"level":"ERROR","args":["[{\"Id\":1,\"UserId\":1,\"PlanId\":1,\"GroupI (1374069 bytes truncated)",130],"conn_id":"66g4YSswso2QqsQE","duration":2.138179,"ERROR":"invalid connection","query":"UPDATE campaigns SET vendor_products=? WHERE id=?","stmt_id":"Mygo_MuAaIuGYwe2","time":1605747034,"message":"StmtExecContext"} 
{"level":"ERROR","conn_id":"66g4YSswso2QqsQE","duration":0.00295,"ERROR":"driver: bad connection","query":"UPDATE campaigns SET vendor_products=? WHERE id=?","stmt_id":"Mygo_MuAaIuGYwe2","time":1605747034,"message":"StmtClose"} 

我正在使用的版本

代码语言:javascript
复制
github.com/go-sql-driver/mysql v1.4.1
go 1.13
github.com/jmoiron/sqlx v0.0.0-20181024163419-82935fac6c1a

知道我怎么解决这个问题吗?还是我应该想另一个解决办法?比如可能将文本存储到S3而不是SQL?

我做过一些研究,但这些都没有帮助。我发现的一些东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-19 17:13:12

增加max_allowed_packet回答了我的问题。

参考资料:https://mariadb.com/docs/reference/mdb/system-variables/max_allowed_packet/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64904095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档