1

我正在编写一个PERL插入多个 SQL 语句的脚本。因为我在一次插入中插入 5000 行,所以我必须增加 max_allowed_pa​​cket 大小。

当我第一次运行脚本时它会给出一个错误
packet size bigger than max_allowed_packet,但是当它再次运行时它不会给出这个错误。

我已经设置autocommit=0并在执行后执行提交$dbh->do("SET global max_allowed_packet=134217728") or $logger->error("Error : $DBI::errstr");

当我连接到数据库时,我是否指定了这个?如果您能告诉我多个插入语句的替代方法,那也很棒。

PS:我知道我可以在配置文件中进行更改,但我想动态地进行更改,并且我也知道准备和执行语句。

4

1 回答 1

2

我认为您想要的是解决此问题并保持服务器同时运行,因为如果您要更改配置文件中的变量值,那么您必须重新启动 mysql 服务器才能使此更改生效。

现在很明显$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”的变量及其值。现在你完成了。

据我所知,此信息是最好的,希望这也能解决问题。

于 2013-08-14T11:16:23.907 回答