这是MySql.Data.DLL在查询长度大于最大长度限制的条件下引发的异常消息(错误)之一;
您可以通过3种方式解决此问题:
第一种方式:执行SQL查询/语句来修改限制
将长度限制设置为32MB:
SET GLOBAL max_allowed_packet=3210241024;
将长度限制设置为1GB(MySQL服务器中允许的最大值):
SET GLOBAL max_allowed_packet=102410241024;
要么 SET SESSION
SET SESSION max_allowed_packet=102410241024;
你需要注意的事情:
您用于连接MySQL服务器的USER需要具有修改任何GLOBAL变量的权限(管理权限)。
SET GLOBAL将在新连接上生效,而不是在当前连接上生效。
SET SESSION将在当前连接上生效。
重新启动MySQL服务器后,更改将重置。
用于修改样品C#代码max_allowed_packet通过使用SET GLOBAL:
使用(MySqlConnection conn = new MySqlConnection(connectionString))
{
使用(MySqlCommand cmd = new MySqlCommand())
{
cmd。Connection = conn ;
cmd。Open();
cmd。CommandText = “ SET GLOBAL max_allowed_packet = 32 * 1024 * 1024; ” ;
cmd。ExecuteNonQuery();
//关闭并重新打开Connection
conn。Close();
cmd。Open();
//开始在这里生效...
//做点什么......
com.Close();
}
}
第二种方式:修改选项文件my.ini
停止MySQL服务器。
在服务器上打开MySQL选项文件 - my.ini在以下部分mysqld添加以下行:
max_allowed_packet=32M
重启MySQL服务器。
这将更改max_allowed_packet所有连接的永久值。
阅读MySQL官方文档:http: //dev.mysql.com/doc/refman/5.7/en/packet-too-large.html
第三种方式,MaxSqlLength进入MySqlBackup.ExportInfo
如果您不允许或没有max_allowed_packet在MySQL中修改的权限,则必须设置MySqlBackup.NET将生成的单个组合SQL转储查询的最大长度限制:
示例:将最大长度限制为1MB:
使用(MySqlConnection conn = new MySqlConnection(constring))
{
使用(MySqlCommand cmd = new MySqlCommand())
{
使用(MySqlBackup mb = new MySqlBackup(cmd))
{
cmd。Connection = conn ;
mb.ExportInfo.MaxSqlLength = 1024 * 1024; // 1MB
mb。ExportInfo。MaxSqlLength = 1024 * 1024 ; // 1MB
MB。ExportToFile(file);
}
}
}
注意:如果表包含具有大数据长度数据类型的列,例如:MEDIUMTEXT,LONGTEXT,MEDIUMBLOB,LONGBLOB。您可能无法使用上述代码导入转储文件。这是因为MySQL服务器阻止了任何大于默认值的SQL长度max_allowed_packet。
本文介绍了在使用Unity与MySQL交互时遇到'MySqlException: Packets larger than max_allowed_packet are not allowed'异常的解决方案。提供三种方法:1. 通过SQL查询修改max_allowed_packet限制;2. 修改my.ini配置文件;3. 使用MySqlBackup.NET设置MaxSqlLength。每种方法详细阐述了操作步骤和注意事项。
3892

被折叠的 条评论
为什么被折叠?



