当使用rails / activerecord与MySQL数据库通信时,我可以设置max_allowed_pa​​cket吗?

时间:2011-01-17 17:18:38

标签: mysql ruby-on-rails activerecord

MySQL有一个setting called 'max_allowed_packet',它是为客户端和服务器单独设置的。在服务器端它位于配置文件中,当客户端是rails ActiveRecord时,是否可以在客户端将其设置为非默认值?

2 个答案:

答案 0 :(得分:3)

来自documnentation

  

在客户端,max_allowed_pa​​cket的默认值为1GB。

所以,你只需要在服务器端更改它。根据您使用的MySQL版本,您可以通过运行

在全球范围内执行动态
SET GLOBAL max_allowed_packet=16777216

SET max_allowed_packet=16777216

我假设最大尺寸为16MB。如您所述,您还可以在my.cnf中设置全局变量。

目前,您无法在每个会话的基础上更改此内容。

mysql> SET SESSION max_allowed_packet=102400000; 

ERROR 1621 (HY000): SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value

答案 1 :(得分:1)

我不知道是否可以提供帮助,但您可以在运行时设置mysql变量。

ActiveRecord::Base.connection.execute("set global max_allowed_packet=1000000000;")