mySQL在插入大blob时断开连接
本文关键字:断开 连接 blob 插入 mySQL | 更新日期: 2023-09-27 18:06:26
我使用这个方法插入一个大blob到我的mySQL数据库(blob大小~40MB)大约15秒后,它抛出一个异常。
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: Fatal error during command execution.
内部例外:
SocketException:已存在的连接被远程主机强制关闭
我已经修改了net_read_timeout (600), net_write_timeout (600), wait_timeout (28800), slave_net_timeout(3600)和interactive_timeout(28800)。
"image"列是一个LONGBLOB
我也遇到过同样的问题。
设置以下变量对我很有帮助。
set global bulk_insert_buffer_size=99999744;
尝试将列更改为LONGBLOB
我曾经遇到过类似的问题,增加日志文件有所帮助。请参阅my.ini中的"innodb_log_file_size"变量-它通常需要是blob的两倍大。尽管在某些情况下(比如200MB以上)它可能仍然没有帮助…