【发布时间】:2011-01-18 04:57:07
【问题描述】:
MySQL 有一个setting called 'max_allowed_packet',它是为客户端和服务器分别设置的。在服务器端它位于配置文件中,当客户端是 rails ActiveRecord 时,是否可以在客户端将其设置为非默认值?
【问题讨论】:
标签: mysql ruby-on-rails activerecord
MySQL 有一个setting called 'max_allowed_packet',它是为客户端和服务器分别设置的。在服务器端它位于配置文件中,当客户端是 rails ActiveRecord 时,是否可以在客户端将其设置为非默认值?
【问题讨论】:
标签: mysql ruby-on-rails activerecord
在客户端,max_allowed_packet 默认为 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
【讨论】:
我不知道是否有帮助,但你可以在运行时设置 mysql 变量。
ActiveRecord::Base.connection.execute("set global max_allowed_packet=1000000000;")
【讨论】: