更改Mysql全局变量

时间:2013-08-14 10:43:32

标签: mysql perl dbi

我正在处理插入多个SQL语句的PERL脚本。 因为我在一个插入中插入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");

后执行提交

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

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

1 个答案:

答案 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”。 现在你已经完成了。

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