簡體   English   中英

sqlx 寫入:管道損壞

[英]sqlx write: broken pipe

我正在嘗試將大量文本更新到 MariaDB 表中,但不斷出現broken pipe錯誤。 該列具有longtext數據類型,從我的日志來看,該數據的大小為~1374069 bytes

我嘗試將MaxConnLife更新為幾個不同的值,例如 MariaDB 的wait_timeout一半,該值設置為28800 -> db.SetConnMaxLifetime(14400)

這就是我的 DB conn 的樣子

    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")

錯誤日志

{"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"} 

我正在使用的版本

github.com/go-sql-driver/mysql v1.4.1
go 1.13
github.com/jmoiron/sqlx v0.0.0-20181024163419-82935fac6c1a

知道我該如何解決這個問題嗎? 還是我應該考慮另一種解決方案? 就像可能將此文本存儲到 S3 而不是 SQL 一樣?

我做了一些研究,但這些都沒有幫助。 我發現的一些東西。

增加max_allowed_packet回答我的問題。

參考: https : //mariadb.com/docs/reference/mdb/system-variables/max_allowed_pa​​cket/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM