• 【解决】图片传到数据库时,报错 MySQLserver has gone away BrokenPipeError


    问题背景

    在本机开发,将大图片可以通过程序村放入数据库。然后在服务器端测试,却报以下错误。
    <class 'bytes'> 514412 # 图片数据大小
    <class 'str'> 514412 # 图片数据大小
    (pymysql.err.OperationalError)(2006, "MySQLserver has gone away (BrokenPipeError(32, 'Broken pipe'))"
    (Background on this error at http://sqlalche.me/e/e3q8)

    解决步骤

    1. 已经检查models函数的相关字段
      base64Str = db.Column(db.LargeBinary(65536))

    2. 检查数据库相关字段格式
      desc table_name;
      Field Type
      base64Str mediumblob

    3. 网络搜索 pymysql.err.OperationalError
      解释:对于与数据库操作相关但不一定在程序员控制下的错误,如发生意外的断开连接、没有找到数据源名称、无法处理事务、在处理过程中发生内存分配错误等,会引发异常。

    4. 进一步搜索 "MySQLserver has gone away (BrokenPipeError(32, 'Broken pipe'))"

    解决办法:调整max_allowed_packet 参数

    MariaDB [(none)]> show variables like '%max_allowed%';
    +--------------------------+------------+
    | Variable_name | Value |
    +--------------------------+------------+
    | max_allowed_packet | 16777216 |
    | slave_max_allowed_packet | 1073741824 |
    +--------------------------+------------+
    2 rows in set (0.00 sec)
    16777216 = 16 × 1024 × 1024

    MariaDB [none]> show variables like '%max%_allowed%';
    +--------------------------+------------+
    | Variable_name | Value |
    +--------------------------+------------+
    | max_allowed_packet | 1048576 |
    | slave_max_allowed_packet | 1073741824 |
    +--------------------------+------------+
    2 rows in set (0.00 sec)
    1048576 = 1024 ×1024

    set global max_allowed_packet = 2 × 1024 × 1024 × 10

  • 相关阅读:
    registration system(map+思维)
    Codeforces 158B:Taxi(贪心)
    牛客小白月赛24 B-组队(二分)
    CF58C Trees(逆向思维)
    lower_bound和upper_bound学习笔记
    POJ--2689Prime Distance(区间素数筛)
    Codeforces Round #635 (Div. 2)
    navicat premium安装,使用
    Oracel 之PL/SQL Developer使用
    PLSQL,sql语句中带有中文的查询条件查询不到数据
  • 原文地址:https://www.cnblogs.com/daemonFlY/p/12420534.html
Copyright © 2020-2023  润新知