今天测出了mysql.data.dll 版本6.3.1的bug。text类型的数据,长度超过一定长度时,逻辑上的错误,造成MySql.Data.MySqlClient.MySqlPacket.ReadString(Int64 length)中的length变量保持为初值-1,再调System.IO.MemoryStream.Read(Byte[] buffer, Int32 offset, Int32 count)时count为-1出错。
经测试,最新的6.5.4修复了这个Bug。
bug如下。[类型] ArgumentOutOfRangeException
[Message] 要求非负数。
参数名: count
[StackTrace]
在 System.IO.MemoryStream.Read(Byte[] buffer, Int32 offset, Int32 count)
在 MySql.Data.MySqlClient.MySqlPacket.ReadString(Int64 length)
在 MySql.Data.Types.MySqlString.MySql.Data.Types.IMySqlValue.ReadValue(MySqlPacket packet, Int64 length, Boolean nullVal)
在 MySql.Data.MySqlClient.NativeDriver.ReadColumnValue(Int32 index, MySqlField field, IMySqlValue valObject)
在 MySql.Data.MySqlClient.ResultSet.get_Item(Int32 index)
在 MySql.Data.MySqlClient.MySqlDataReader.GetFieldValue(Int32 index, Boolean checkNull)
在 MySql.Data.MySqlClient.MySqlDataReader.GetValue(Int32 i)
在 MySql.Data.MySqlClient.MySqlDataReader.GetValues(Object[] values)
在 System.Data.ProviderBase.DataReaderContainer.CommonLanguageSubsetDataReader.GetValues(Object[] values)
在 System.Data.ProviderBase.SchemaMapping.LoadDataRow()
在 System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping mapping)
在 System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
在 System.Data.Common.DataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
在 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)