为什么我不能在mysql中存储20千字节的图像

时间:2016-07-25 16:08:57

标签: mysql .net blob mysql-connector

我使用以下代码使用MysqlConnector for .net在mysql的tinyblob字段中存储缩略图大小的图像(小于50kb)

Dim imgCov As New ImageConverter()
        Dim imgArray As Byte() = DirectCast(imgCov.ConvertTo(pictureBox1.Image , GetType(Byte())), Byte())

        Try
            Using conn As New MySqlConnection(conStr)
                conn.Open
                Dim sql As String ="Insert Into Services(Name,Code,Emp_ID,Image) Values(@Name,@Code,@Emp_ID,@Image)"
                Using cmd As New MySqlCommand(sql,conn)
                    cmd.Parameters.Add("@Name", MySqlDbType.VarChar, 45).Value ="Ironing"
                    cmd.Parameters.Add("@Code", MySqlDbType.VarChar, 45).Value ="IRN"
                    cmd.Parameters.Add("@Emp_ID", MySqlDbType.Int32).Value =1
                    cmd.Parameters.Add("@Image", MySqlDbType.LongBlob, 100).Value=imgArray
                    cmd.ExecuteNonQuery ()
                End Using
            End Using
            MsgBox("Insert Complete")

        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

问题是当我存储图像时,它不会保存所有数据。当我尝试检索并开始出错时,这很明显。

调查错误,我简单地将字段大小增加到longblob,之后工作正常。

那么为什么我不能在微小的野外场中存储20KB的图像?

1 个答案:

答案 0 :(得分:5)

TINYBLOB只能容纳256个字节;你需要至少一个普通的BLOB,它可以存储64KB。

http://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html