问:使用mysql jdbc driver 连接分析型数据库时 报错 Packet for query is too large (90 > -1). You can change this value on the server by setting the max_allowed_packet’ variable.
答:这个是由于jdbc driver 某些版本和分析型数据库不兼容导致的,可以使用5.1.34等兼容性较好的jdbc driver 版本。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
当您遇到“Packet for query is too large (90 > -1). You can change this value on the server by setting the max_allowed_packet’ variable.”这个错误时,意味着您尝试通过MySQL JDBC Driver向分析型数据库发送的查询数据包大小超出了服务器允许的最大值。解决这个问题有两种方法:
修改JDBC驱动版本:正如您提到的,可以尝试更换为一个与分析型数据库兼容性更好的JDBC驱动版本,比如5.1.34。这可能有助于解决因驱动不兼容导致的问题。在更换驱动前,请确保检查您的应用是否支持所选驱动版本,避免引入其他兼容性问题。
调整max_allowed_packet
参数:如果更换驱动版本不能解决问题或者不是首选方案,您可以在数据库服务器端调整max_allowed_packet
参数来增加允许的数据包大小。这个参数控制了MySQL能够处理的单个SQL语句或结果集的最大尺寸。调整方法如下:
临时调整:可以通过运行以下SQL命令来临时增大该值(这里以设置为100MB为例):
SET GLOBAL max_allowed_packet=104857600;
请注意,这种设置会在MySQL服务重启后恢复到默认值。
永久调整:为了永久改变这个设置,您需要编辑MySQL的配置文件(通常是my.cnf
或my.ini
),然后在[mysqld]部分添加或修改以下行:
max_allowed_packet=104857600
修改后,需要重启MySQL服务使更改生效。
在进行这些操作之前,请根据您的具体环境和需求谨慎考虑,特别是调整系统参数可能对资源使用和性能有影响。如果您使用的是阿里云的RDS、AnalyticDB等服务,还需要注意遵循阿里云的相关最佳实践和限制条件。