插入大blob时mySQL断开连接

时间:2013-03-28 17:14:06

标签: c# mysql .net blob

我正在使用此方法将大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

3 个答案:

答案 0 :(得分:0)

尝试将列更改为LONGBLOB

答案 1 :(得分:0)

我有一次类似的问题并且增加了日志文件。请参阅my.ini中的“innodb_log_file_size”变量 - 它通常需要是blob的两倍。虽然仍处于某种程度(如200MB +),但它可能仍无济于事......

答案 2 :(得分:0)

我遇到了同样的问题。
设置以下变量对我有帮助。

set global bulk_insert_buffer_size=99999744;