source

sqlx 쓰기: 파이프 손상

factcode 2023. 6. 18. 16:23
반응형

sqlx 쓰기: 파이프 손상

대용량 텍스트를 MariaDB 테이블로 업데이트하려고 하는데 계속 표시됩니다.broken pipe오류열에 다음이 있습니다.longtext데이터 유형 및 로그를 보면 데이터의 크기는 다음과 같습니다.~1374069 bytes.

업데이트를 시도했습니다.MaxConnLife나의 절반과 같은 몇 가지 다른 가치들로.wait_timeout다음으로 설정된 MariaDB에서28800->db.SetConnMaxLifetime(14400)

이것이 내 DB 연결의 모습입니다.

    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

내가 이걸 어떻게 해결할 수 있는지 알아요?아니면 다른 해결책을 생각해야 할까요?이 텍스트를 SQL 대신 S3에 저장하는 것처럼?

제가 몇 가지 조사를 해봤지만 아무 것도 도움이 되지 않았습니다.내가 찾은 물건들 중 일부.

증가하는 것.max_allowed_packet제 질문에 대한 답입니다.

참조: https://mariadb.com/docs/reference/mdb/system-variables/max_allowed_packet/

언급URL : https://stackoverflow.com/questions/64904095/sqlx-write-broken-pipe

반응형