为什么我不能在 mysql 中存储 20 KB 的图像

Why cant i store 20 kilibytes image in mysql

我使用 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,之后工作正常。

为什么我不能在 tinyblob 字段中存储 20KB 的图像?

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

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