我正在处理插入多个SQL语句的PERL
脚本。
因为我在一个插入中插入5000行所以我必须增加max_allowed_packet大小。
当我第一次运行脚本时,它会出错
packet size bigger than max_allowed_packet
但是当它再次运行时,它不会出现此错误。
我已经设置autocommit=0
并在执行$dbh->do("SET global max_allowed_packet=134217728") or $logger->error("Error : $DBI::errstr");
我在连接数据库时是否指定了这个? 如果你能告诉我多个插入语句的替代方法,那也很棒。
P.S:我知道我可以在配置文件中进行更改,但我想动态地进行更改,并且我也知道准备和执行语句。
答案 0 :(得分:2)
我认为你想要的就像解决这个问题并让你的服务器同时运行一样,因为如果要更改配置文件中的变量值,那么你必须重新启动mysql服务器才能使这个更改生效。< / p>
现在很明显$dbh->do("SET global max_allowed_packet=134217728") or $logger->error("Error : $DBI::errstr");
它是一个动态变量。
您需要做的是,转到您的mysql-server控制台并编写以下命令:
SET GLOBAL max_allowed_packet=134217728;
现在,您已完成更新变量的值。您可以通过以下查询
查看此变量的值SHOW VARIABLES LIKE 'max%';
它将显示所有变量及其值,前缀为“max”。 现在你已经完成了。
这些信息是我所知的最好,希望这也能解决问题。