MYSQL报错“Packets larger than max_allowed_packet are not allowed”

本文介绍了BLOB(binary large object)的概念及其在MySQL中的应用。BLOB是一种用于存储二进制大对象的数据类型,常用于保存图片、音频等多媒体文件。MySQL提供了TinyBlob、Blob、MediumBlob和LongBlob四种BLOB类型,每种类型的最大存储容量不同。
BLOB (binary large object),二进制大对象,是一个可以存储二进制文件的容器。在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型。
BLOB是一个大文件,典型的BLOB是一张图片或一个声音文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库)。根据Eric Raymond的说法,处理BLOB的主要思想就是让文件处理器(如数据库管理器)不去理会文件是什么,而是关心如何去处理它。但也有专家强调,这种处理大数据对象的方法是把双刃剑,它有可能引发一些问题,如存储的二进制文件过大,会使数据库的性能下降。在数据库中存放体积较大的多媒体对象就是应用程序处理BLOB的典型例子。 


mysql BLOB类型 


MySQL中,BLOB是个类型系列,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储文件的最大大小上不同。 
  MySQL的四种BLOB类型 
  类型 大小(单位:字节) 
  TinyBlob 最大 255 
  Blob 最大 65K 
  MediumBlob 最大 16M 
  LongBlob 最大 4G 


linux修改etc/my.cnf 
[mysqld] 

max_allowed_packet = 16M //不同于[mysqldump]下的max_allowed_packet 


以上为转载内容,还有说设置my-large.ini、my-small.ini、my-medium.ini、my-huge.ini4个文件的

一开始不明白,在4个文件里搜索max_allowed_packet,在mysqld和mysqldump分类下分别找到了max_allowed_packet,默认为1M、16M

仔细琢磨才知道[mysqld] 应该是代表了分类,分别对应于某个下面的设置。把4个文件下的mysqld分类中的max_allowed_packet全设置16M,重启

服务后没有生效。

但是后来研究半天才知道自己SB了,这些ini只是MySQL提供的可参考的配置文件,具体的配置是my.ini。

最后将max_allowed_packet = 16M  拷贝到my.ini中的mysqld分类下,重启服务,可以了。

当在初始化数据源时出现 `CommunicationsException` 通信链接失败错误,且驱动未收到服务器数据包,可参考以下可能的解决办法: ### 检查数据库连接 URL 配置 确保数据库连接 URL 配置正确,可参考如下配置示例,注意添加必要的参数如 `useUnicode`、`characterEncoding`、`serverTimezone` 等: ```properties jdbcUrl=jdbc:mysql://23.48.16.20:3306/dayou_wms?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&max_allowed_packet=67108864 ``` 这里使用 `Asia/Shanghai` 作为时区,根据实际情况可调整为其他合适的时区,若出现时区问题可参考类似 “You must configure either the server or JDBC driver (via the serverTimezone configuration property)” 问题的解决办法,将 URL 改为 `jdbc:mysql://localhost:3306/xxx?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC` 这种形式 [^1]。 ### 检查 MySQL 驱动版本 确保使用的 MySQL 驱动版本与数据库版本兼容。可根据数据库版本修改 `pom.xml` 文件中的依赖版本,例如: ```xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.25</version> </dependency> ``` 将版本改成和数据库对应的版本即可 [^4]。 ### 检查网络连接 - 检查客户端与 MySQL 服务器之间的网络连接是否正常,确保服务器地址 `23.48.16.20` 和端口 `3306` 可正常访问。 - 检查防火墙设置,确保允许客户端访问 MySQL 服务器的端口。 ### 检查数据库服务器状态 - 确认 MySQL 服务器是否正常运行,可尝试重启 MySQL 服务。 - 检查 MySQL 服务器的日志文件,查看是否有异常信息。 ### 字符集设置 若以上方法不行,可尝试设置字符集,使用以下 SQL 语句: ```sql set character_set_client=utf8; set character_set_connection=utf8; set character_set_database=utf8; set character_set_results=utf8; set character_set_server=utf8; set character_set_system=utf8; ``` 这可能有助于解决因字符集不匹配导致的连接问题 [^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值