MySQL Workbench 发行说明  / MySQL Workbench 6.0 中的变化  /  MySQL 连接器/NET 6.0.5 的变化 (2009-11-12)

MySQL 连接器/NET 6.0.5 的变化 (2009-11-12)

这是一个新版本,修复了最近发现的错误。

修正错误

  • 的克隆MySqlCommand不是类型安全的。要克隆 a MySqlCommand,必须执行以下操作:

    MySqlCommand clone = (MySqlCommand)((ICloneable)comm).Clone();

    MySQL Connector/NET 已更改,以便可以执行以下操作:

    MySqlCommand clone = comm.Clone();

    (漏洞 #48460)

  • 如果MySqlConnection.GetSchema在名为b`a`d的表上调用“索引” ,如下所示:

    DataTable schemaPrimaryKeys = connection.GetSchema(
      "Indexes",
      new string[] { null, schemaName, "b`a`d"});

    然后产生了以下异常:

    You have an error in your SQL syntax; check the manual that corresponds to
    your MySQL server version for the right syntax to use near 'a`d`' at line 1

    (漏洞 #48101)

  • 如果值大于 .NET 类型支持的值,则无法从 MySQL 服务器表中检索值System.Decimal

    MySQL Connector/NET 已更改为公开 MySqlDecimal类型以及支持方法GetMySqlDecimal。(漏洞 #48100)

  • 从包含具有类型列的表UNSIGNED BIGINT和表视图的模式创建的实体模型行为不正确。创建实体并将其映射到视图时,类型的列 UNSIGNED BIGINT显示为 BIGINT。(漏洞 #47872)

  • 将Connector/NET源码包含的文件加载MySQLClient-mono.sln到Mono Develop时,出现如下错误:

    /home/tbedford/connector-net-src/6.1/MySQLClient-mono.sln(22):
    Unsupported or unrecognized project:
    '/home/tbedford/connector-net-src/6.1/Installer/Installer.wixproj'

    如果修改文件以消除此问题,则尝试构建解决方案会生成以下错误:

    /home/tbedford/connector-net-src/6.1/MySql.Data/Provider/Source/Connection.cs(280,46):
    error CS0115: `MySql.Data.MySqlClient.MySqlConnection.DbProviderFactory' is marked as an
    override but no suitable property found to override

    (漏洞 #47048)

  • 如果在连接到 MySQL 服务器期间发生错误,则从数据包缓冲区反序列化错误消息 NullReferenceException会导致抛出 。当该方法MySqlPacket::ReadString()试图检索错误消息时,以下代码行抛出异常:

    string s = encoding.GetString(bits, (int)buffer.Position, end - (int)buffer.Position);

    这是因为编码字段没有正确初始化。(漏洞 #46844)

  • MySqlDataReader类中, GetSByte函数返回一个 byte值而不是一个 sbyte值。(漏洞 #46620)

  • MySQL 连接器/NET 配置文件提供程序 MySql.Web.Profile.MySQLProfileProvider在 Mono 上运行时生成错误。当尝试在字符串中保存字符串时,Profile.Name该字符串未保存到 my_aspnet_Profiles表中。如果尝试强制保存并Profile.Save() 生成以下错误:

    Server Error in '/mono' Application
    
    --------------------------------------------------------------------------------
    
    The requested feature is not implemented.
    Description: HTTP 500. Error processing request.
    
    Stack Trace:
    
    System.NotImplementedException: The requested feature is not implemented.
    at MySql.Data.MySqlClient.MySqlConnection.EnlistTransaction
    (System.Transactions.Transaction transaction) [0x00000]
    at MySql.Data.MySqlClient.MySqlConnection.Open () [0x00000]
    at MySql.Web.Profile.MySQLProfileProvider.SetPropertyValues
    (System.Configuration.SettingsContext context,
    System.Configuration.SettingsPropertyValueCollection collection) [0x00000]
    
    
    --------------------------------------------------------------------------------
    Version information: Mono Version: 2.0.50727.1433; ASP.NET Version: 2.0.50727.1433

    (漏洞 #46375)

  • TIMESTAMP在 Entity Framework 中使用列 时发生异常 。(漏洞 #46311)

  • MySQL Connector/NET 有时会挂起,但不会产生异常。如果从流中读取失败返回 0,导致代码LoadPacket()进入无限循环,就会发生这种情况。(漏洞 #46308)

  • 使用 MySQL Connector/NET 6.0.4 和 MySQL Server 4.1 时,在尝试执行时会生成异常:

    connection.GetSchema("Columns", ...);

    生成的异常是:

    'connection.GetSchema("Columns")' threw an exception of type
    'System.ArgumentException'System.Data.DataTable {System.ArgumentException}
    base{"Input string was not in a correct format.Couldn't store <'Select'> in
    NUMERIC_PRECISION Column.  Expected type is UInt64."}System.Exception
    {System.ArgumentException}

    (漏洞 #46270)

  • MySQL Connector/NET 方法 StoredProcedure.GetParameters(string)忽略了程序员对该 UseProcedureBodies选项的设置。这破坏了任何应用程序的参数名称与存储过程中的参数名称不匹配的应用程序,导致出现ArgumentException消息 在集合中找不到参数'foo'。和以下堆栈跟踪:

    MySql.Data.dll!MySql.Data.MySqlClient.MySqlParameterCollection.GetParameterFlexible(stri
    ng parameterName = "pStart", bool throwOnNotFound = true) Line 459C#
    MySql.Data.dll!MySql.Data.MySqlClient.StoredProcedure.Resolve() Line 157 + 0x25
    bytesC#
    MySql.Data.dll!MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(System.Data.CommandBeha
    vior behavior = SequentialAccess) Line 405 + 0xb bytesC#
    MySql.Data.dll!MySql.Data.MySqlClient.MySqlCommand.ExecuteDbDataReader(System.Data.Comma
    ndBehavior behavior = SequentialAccess) Line 884 + 0xb bytesC#
    System.Data.dll!System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(System
    .Data.CommandBehavior behavior) + 0xb bytes
    System.Data.dll!System.Data.Common.DbDataAdapter.FillInternal(System.Data.DataSet
    dataset = {System.Data.DataSet}, System.Data.DataTable[] datatables = null, int
    startRecord = 0, int maxRecords = 0, string srcTable = "Table", System.Data.IDbCommand
    command = {MySql.Data.MySqlClient.MySqlCommand}, System.Data.CommandBehavior behavior) +
    0x83 bytes
    System.Data.dll!System.Data.Common.DbDataAdapter.Fill(System.Data.DataSet dataSet, int
    startRecord, int maxRecords, string srcTable, System.Data.IDbCommand command,
    System.Data.CommandBehavior behavior) + 0x120 bytes
    System.Data.dll!System.Data.Common.DbDataAdapter.Fill(System.Data.DataSet dataSet) +
    0x5f bytes

    (漏洞 #46213)

  • MySQL 转换TINYINT(1)失败 boolean。(错误#46205、错误#46359、错误#41953)

  • 使用表编辑器在 Visual Studio 中填充 MySQL 数据库表时,如果将VARCHAR(10)列更改为VARCHAR(20)列,则会生成异常:

    SystemArgumentException: DataGridViewComboBoxCell value is not valid.
    To replace this default dialog please handle the DataError Event.

    (漏洞 #46100)

  • 在 MySQL Connector/NET 6.0.4 中使用GetProcData生成错误,因为parameters仅当 MySQL 服务器版本至少为 6.0.6 或UseProcedureBodies连接字符串选项设置为 true 时才创建数据表。

    DeriveParameters命令还生成空引用异常。这是因为 在循环parameters中使用了空的数据表。for each(漏洞 #45952)

  • 使用和方法时, 实体框架提供程序未 DBSortExpression正确 调用,例如在以下语句中: SkipTake

    TestModel.tblquarantine.OrderByDescending(q => q.MsgDate).Skip(100).Take(100).ToList();

    这导致数据未排序。(漏洞 #45723)

  • 代码通过多次EscapeString调用进行了转义。string.Replace这导致了性能瓶颈,因为每一行都会分配一个新字符串,而垃圾收集器会处理掉另一个字符串。(漏洞 #45699)

  • Allow Batch=False选项添加到连接字符串会导致 MySQL Connector/NET 生成错误:

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL
    server version for the right syntax to use near 'SET character_set_results=NULL' at line 1

    (漏洞 #45502)

  • MySQL Connector/NET 6.0.4 安装程序因错误而失败。生成的错误消息是:

    There is a problem with this Windows Installer package. A DLL required for this
    install to complete could not be run. Contact your support personnel or package vendor.

    单击“确定”以确认安装程序退出的错误。(漏洞 #45474)

  • 使用连接字符串选项连接到 MySQL 服务器的 MySQL 连接器/NET 测试程序compress=true 崩溃,但仅当在 Mono 上运行时。该程序在 Microsoft Windows 上运行时按预期工作。

    这是由于 Mono 中的错误。修改了 MySQL Connector/NET 以避免WeakReferences在导致崩溃的 Compressed流类中使用。(漏洞 #45463)

  • 调用SaveChanges() 具有列类型的任何 MySQL ORM 实体的实体框架方法 TIME,生成错误消息:

    Unknown PrimitiveKind Time

    (漏洞 #45457)

  • 使用实体框架时插入两个表失败。生成的异常是:

    The value given is not an instance of type 'Edm.Int32'

    (漏洞 #45077)

  • 将输入参数与 ADO.NET 数据实体一起使用时,存储过程中缺少输入参数。(漏洞 #44985)

  • 将实体框架与使用逗号作为小数点分隔符的区域性一起使用时发生错误。这是因为SINGLE, DOUBLEDECIMAL值的格式处理不正确。(漏洞 #44455)

  • 尝试使用 MySQL Connector/NET 的 Compact Framework 版本连接到 MySQL 时, IndexOutOfRangeException在尝试打开连接时会生成异常。(漏洞 #43736)

  • 读取数据时,例如使用 MySqlDataAdapteron a ,如果启用了压缩MySqlConnection,MySQL Connector/NET 可能会进入无限循环 。CompressedStream.ReadNextpacket()(漏洞 #43678)

  • 从公共 SVN 存储库检出的源代码构建 MySQL Connector/NET 时发生错误。这发生在使用 Mono 和 Nant 的 Linux 上。Mono JIT 编译器版本为 1.2.6.0。Nant 版本是 0.85。

    当尝试使用以下命令构建(例如)MySQL Connector/NET 5.2 分支时:

    $ nant -buildfile:Client.build

    发生以下错误:

    BUILD FAILED
    
    Error loading buildfile.
    Encoding name 'Windows-1252' not supported.
    Parameter name: name

    (漏洞 #42411)

  • 在将对“C:\Program Files\MySQL\MySQL Connector Net 5.2.4\Compact Framework\MySql.Data.CF.dll”的引用添加到 Windows Mobile 5.0 项目后,该项目无法构建,生成了一个 Microsoft Visual C# 编译器错误。

    产生的错误是:

    Error 2 The type 'System.Runtime.CompilerServices.CompilerGeneratedAttribute'
    has no constructors defined MysqlTest
    Error 3 Internal Compiler Error (0xc0000005 at address 5A7E3714):
    likely culprit is 'COMPILE'.

    (漏洞 #42261)

  • MySQL Connector/NET CHM 文档声明支持 MySQL Server 3.23。(漏洞 #42110)

  • 在长时间网络不活动的情况下,尤其是在使用连接池时,连接有时会被丢弃,例如,被防火墙丢弃。

    注意:错误修复引入了一个新keepalive 参数,它通过在指定的超时后发送一个空的 TCP 数据包来防止断开连接。(缺陷号 40684)

  • MySQL Connector/NET 生成以下异常:

    System.NullReferenceException: Object reference not set to an instance of an object.
          bei MySql.Data.MySqlClient.MySqlCommand.TimeoutExpired(Object commandObject)
          bei System.Threading._TimerCallback.TimerCallback_Context(Object state)
          bei System.Threading.ExecutionContext.runTryCode(Object userData)
          bei
          System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode
          code, CleanupCode backoutCode, Object userData)
          bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext,
          ContextCallback callback, Object state)
          bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext,
          ContextCallback callback, Object state)
          bei System.Threading._TimerCallback.PerformTimerCallback(Object state)

    (漏洞 #40005)

  • 通过 MySQL Connector/NET 调用带有输出参数的存储过程导致内存泄漏。在没有输出参数的情况下调用相同的存储过程不会导致内存泄漏。(漏洞 #36027)

  • 尝试调用时, 将 aDataAdapter与链接一起 使用会抛出以下异常: MySqlCommandBuilderda.Update(DataRow[] rows)

    Connection must be valid and open

    (漏洞 #34657)