【问题标题】:Using ADO.NET MySQL Provider in MVC3 (Unable to find the requested .Net Framework Data Provider. It may not be installed.)在 MVC3 中使用 ADO.NET MySQL Provider(无法找到请求的 .Net Framework Data Provider。可能未安装。)
【发布时间】:2012-03-19 06:48:14
【问题描述】:

我正在尝试连接到我的网络服务器上的 mysql 数据库,但我不断收到:

Unable to find the requested .Net Framework Data Provider.  It may not be installed.

我猜测 ADO.NET 连接器存在,因为如果我将配置更改为:

providerName="System.Data.SQLClient"

我明白了:

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

我的提供商配置是:

    <add name="MySQLMembershipProvider" type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, Version=6.0.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer"
         enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
         autogenerateschema="true" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
         applicationName="/" />
  </providers>

我的连接字符串是:

<add name="LocalMySqlServer"
     connectionString="Data Source=localhost;user id=web210-aaron;password=tester;database=web210-aaron;"
     providerName="System.Data.MySQLClient"/>

我很确定这是正确的,尤其是当我从本地计算机运行它(将主机更改为服务器 IP)时,它运行完美!有人可以确认这是一个正确的连接字符串。

【问题讨论】:

  • 您是否添加了对包含System.Data.MySQLClient 的程序集的引用?
  • 我可能不理解您的情况,但是当您将提供程序名称更改为 System.Data.SQLClient 时,它仅表明可能安装了 SQL Server 提供程序。这并不意味着安装了 MySQL 提供程序。
  • @MarkWilkins 我以为它们都是同一个 ADO 连接器的一部分?我确实在我的本地机器上添加了对程序集的引用,但我无法将它安装在服务器上......我不这么认为
  • 我不太清楚您所说的“ADO 连接器”是什么意思,但是这两个竞争数据库服务器的 .NET 数据提供程序可能不会在同一个安装包中。你当然可以同时安装它们,但我认为它总是需要两个单独的安装包。

标签: c# asp.net mysql asp.net-mvc-3 ado.net


【解决方案1】:

我要回答我自己的问题,因为这浪费了我 3 天的时间来尝试手动配置。

情况

  • 您已经创建了一个 MVC3/razor(可能是其他 c#)应用程序
  • 您正在使用 MySql.Data.MySqlClient 尝试连接到您的数据库
  • 您可以从本地计算机从 VS2010 等 IDE 连接到本地数据库或服务器上的数据库,但在部署站点时无法连接
  • 当您部署您的网站时,您会收到以下错误: Unable to find the requested .Net Framework Data Provider. It may not be installed. 尝试引用 MySql 数据库时

问题是您的网站找不到对 MySQL.Data 的引用。


解决方案

您的web.config 文件中有几个部分需要更改,例如dbproviderfactories 和创建命名空间。这些可以手动添加,但让工具为您完成要简单得多。

您需要在您的 bin 文件夹中包含相关的 dll,或者更好的是,使用 Visual Studio SP1 通过右键单击项目 (there is an option there to create a bin folder containing all of your dlls) 创建相关文件夹和引用。确保 MySql.Data.MySqlClient 包含在此文件夹中,如果不是,您应该能够将其从 bin 文件夹拖到 VS 创建的新文件夹中。

然后您可以使用nuGet package manager consoleinstall BLToolKit。这将下载任何丢失的 dll,将它们插入您的文件夹并自动正确引用它们。这样,您可以将 MVC 应用程序部署到可能未安装 MySql.Data(或任何其他 dll)的 Web 服务器。

【讨论】:

    【解决方案2】:

    你需要先安装这个

    http://dev.mysql.com/downloads/connector/net/1.0.html

    而且它是一个不同的提供者

    http://dev.mysql.com/downloads/connector/net/#downloads

    然后通过 Visual Studio 添加您的数据源,它会为您更改 app.config

    【讨论】:

    • 我意识到这一点。但我不拥有服务器,因此无法在其上安装任何东西。帮助人员给我的连接字符串是:Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=web210-aaron;User=web210-aaron; Password=;Option=3; 这显然不起作用
    • 当您在 Visual Studio 中从“调试”菜单本地运行时会发生什么?
    猜你喜欢
    • 2017-05-24
    • 2015-12-24
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    • 2011-06-29
    • 1970-01-01
    相关资源
    最近更新 更多