我正在使用此方法将大blob插入mySQL数据库(Blob大小~40MB) 大约15秒后它会抛出一个异常。这里的整个过程适用于小于20MB的blob。
protected override int internalExecuteInt(string SQL, byte[] Blob)
{
using (MySqlCommand cmd = new MySqlCommand(SQL, connection))
{
if (Blob != null)
{
cmd.CommandTimeout = 600;
cmd.Parameters.AddWithValue("@blob", Blob);
}
return cmd.ExecuteNonQuery();
}
}
...
internalExecuteInt("INSERT INTO images (image) VALUES (@blob)", myLargeBlob);
...
例外:
MySqlException:命令执行期间遇到致命错误。
内部异常:
SocketException:远程主机强行关闭现有连接
我已经更改了net_read_timeout(600),net_write_timeout(600),wait_timeout(28800),slave_net_timeout(3600)和interactive_timeout(28800)。
“image”列是LONGBLOB
答案 0 :(得分:0)
尝试将列更改为LONGBLOB
答案 1 :(得分:0)
我有一次类似的问题并且增加了日志文件。请参阅my.ini中的“innodb_log_file_size”变量 - 它通常需要是blob的两倍。虽然仍处于某种程度(如200MB +),但它可能仍无济于事......
答案 2 :(得分:0)
我遇到了同样的问题。
设置以下变量对我有帮助。
set global bulk_insert_buffer_size=99999744;