页面树结构
转至元数据结尾
转至元数据起始

(本文档仅供参考)

问题说明

电子表格中有一张图片。点击发布,报"知识库访问异常"。

具体报错信息:

Caused by: org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update

...


Caused by: java.sql.BatchUpdateException: Parameter of prepared statement which is set through mysql_send_long_data() is longer than 'max_allowed_packet' bytes

解决方案

该问题是由于 MySQL 配置中允许Server接受的数据包设置值 max_allowed_packet 太小所导致的。

可以有两种解决方法,通过修改配置文件、或直接在 MySQL 命令行中修改。(注:一般情况通过修改配置文件的方式,通过命令行修改可能出现不生效的情况!)

1、修改配置文件

编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改,修改后需要重启mysql及smartbi服务

max_allowed_packet = 200M
max_long_data_size = 200M

如果找不到my.cnf可以通过“mysql --help | grep my.cnf ”命令去寻找my.cnf文件。Linux下该文件在/etc/下,查找my.cnf文件相关命令:find / -name "my.*"

若启动mysql时报以下错误,说明mysql不识别配置项max_long_data_size = 200M,则不填写该项即可

2、在MySQL命令行中修改

说明:此方案临时生效,重启mysql会失效。

1)在MySQL命令行中运行如下命令: 

set global max_allowed_packet = 200*1024*1024

2)然后退出命令行,再进入,查看下max_allowed_packet是否编辑成功。

show VARIABLES like '%max_allowed_packet%';

注意:该值设置过小将导致单个记录超过限制后写入数据库失败,且后续记录写入也将失败。

3)重启Smartbi。