【问题标题】:MySql.Data.MySqlClient.Replication.ReplicationManager throws an System.TypeInitializationExceptionMySql.Data.MySqlClient.Replication.ReplicationManager 抛出 System.TypeInitializationException
【发布时间】:2016-12-09 09:37:22
【问题描述】:

我的代码无法访问 MySQL 数据库。每次我尝试打开我的连接时,MySql.Data.MySqlClient.Replication.ReplicationManager 都会抛出一个System.TypeInitializationException。这是我的代码:

DataTable results = new DataTable("Results");
using (MySqlConnection connection = new MySqlConnection("SERVER=127.0.0.1;DATABASE=foo;UID=bar;PASSWORD=foobar;"))
{
    using (MySqlCommand command = new MySqlCommand(queryString, connection))
    {
        command.Connection.Open(); //throws System.TypeInitializationException
        command.ExecuteNonQuery();

        using (MySqlDataReader reader = command.ExecuteReader())
        results.Load(reader);
    }
}

编辑:我猜 MySQL 驱动程序已损坏。从 Windows 7 升级到 Windows 10 后一切正常。

【问题讨论】:

    标签: c# mysql xamarin mono


    【解决方案1】:

    我遇到了同样的问题,但是当我使用 Nuget 安装 MySql.Data.dll 时,问题就解决了 从 Nuget 安装 MySql.Dll 文件,

    不是来自 MySQL 网站。

    【讨论】:

      【解决方案2】:

      您的连接字符串格式错误。试试这个:

      static string cs = @"server=localhost;user id=bar;password=foobar;database=foo;";
      DataTable results = new DataTable("Results");
      using (MySqlConnection connection = new MySqlConnection(cs))
      {
          using (MySqlCommand command = new MySqlCommand(queryString, connection))
          {
              command.Connection.Open(); //throws System.TypeInitializationException
              command.ExecuteNonQuery();
      
              using (MySqlDataReader reader = command.ExecuteReader())
              results.Load(reader);
          }
      }
      

      【讨论】:

      • 我试过你编辑的连接字符串,但我仍然得到同样的异常。
      • 您可以尝试启用"native code debugging" in Project -> Properties -> Debug 吗? @JanHenry
      • 我激活了它,但我仍然遇到同样的异常。 @ViVi
      • 运行应用程序的机器是否具有所有必需的 dll?也许您在本地目录中缺少一些互操作
      • 昨天运行良好。我已经对项目中的其他代码进行了一些更改,但我没有触及我的 MySQL 代码。应用程序的所有 DLL 都位于 Debug 文件夹中。
      【解决方案3】:

      就我而言,它仅在生产中引发错误。这是由于 MySql.Data 包中的错误假设。由于某种原因,它似乎要求与 orchestrating dll 位于同一文件夹中(它引用了另一个引用 MySql 的 dll)。我通过删除MySql.Data 并按照here 中的建议安装MySqlConnector 包解决了我的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多