0

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

“图像”列是 LONGBLOB

4

3 回答 3

0

尝试将列更改为 LONGBLOB

于 2013-03-28T17:24:50.177 回答
0

我曾经遇到过类似的问题,增加日志文件有帮助。请参阅 my.ini 中的“innodb_log_file_size”变量 - 它通常需要是 blob 的两倍。虽然仍然在某个时候(比如 200MB+),但它可能仍然无济于事......

于 2013-06-04T23:50:51.017 回答
0

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

set global bulk_insert_buffer_size=99999744;
于 2020-01-02T10:06:45.607 回答