这是红宝石代码:
file = ActiveRecord :: Base.connection.execute("选择LOAD_FILE('#{full_file_path}')")。fetch_row()[0]
该文件为180M,my.cnf中的max_allowed_packet
设置为100M,因此我将其更改为500M:
set global max_allowed_packet=524288000;
值已更改:
mysql> show variables like 'max_allowed_packet';
+--------------------+-----------+
| Variable_name | Value |
+--------------------+-----------+
| max_allowed_packet | 524288000 |
+--------------------+-----------+
1 row in set (0.00 sec)
但我仍然有错误。
来自http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_max_allowed_packet
当您通过更改max_allowed_packet变量的值来更改消息缓冲区大小时,如果您的客户端程序允许,您还应该更改客户端的缓冲区大小。 默认的max_allowed_packet内置于客户端库的值为1GB,但单个客户端程序可能会覆盖此值。例如,mysql和mysqldump的默认值分别为16MB和24MB。它们还允许您通过在命令行或选项文件中设置max_allowed_packet来更改客户端值。
所以也许ruby mysql客户端有一些小值,而在服务器端更改是不够的?