MySQL - ошибка Unable to find the requested .Net Framework Data Provider

Материал из 1GbWiki.

(Различия между версиями)
Перейти к: навигация, поиск
Версия 12:18, 16 мая 2011 (править)
Dmach (Обсуждение | вклад)
м
← К предыдущему изменению
Версия 20:40, 19 сентября 2011 (править) (отменить)
Argar (Обсуждение | вклад)
(Текст изменен мною. Решил написать, т.к. только в такой комбинации у меня заработала страница.)
К следующему изменению →
Строка 1: Строка 1:
=== Пример ошибки === === Пример ошибки ===
-Ошибка '''Unable to find the requested .Net Framework Data Provider. It may not be installed.''' может возникать в случае использования [http://dev.mysql.com/downloads/connector/net/ mySQL .NET Connector] при неверном его конфигурировании и размещении на сайте. Ниже описано что делать.+Ошибка '''Unable to find the requested .Net Framework Data Provider. It may not be installed.''' может возникать в случае использования [http://dev.mysql.com/downloads/connector/net/ mySQL .NET Connector] при неразмещении его на сайте. Ниже описано что делать.
[[Изображение:Fwdataprovider.png|пример ошибки]] [[Изображение:Fwdataprovider.png|пример ошибки]]
-=== Скопировать сборку на сервер ===+=== Добавить файлы MySQL .NET Connector в проект ===
-Сборка '''MySql.Data.dll''' должна быть скопирована в каталог '''bin''' вашего сайта.+Вам необходимо:
-=== Прописать сборку ===+1. Зайти в серверную часть Вашего проекта в Visual Studio.
-В web.config, примерно так:+2. Открыть там вкладку References.
 + 
 +3. Добавить в нее следующие три файла:
 + MySql.Data.dll
 + MySql.Data.Entity.dll
 + MySql.Data.Web.dll
 + 
 +4. В отношении каждого из трех этих файлов выбрать показать свойства (Properties) и изменить там параметр "Copy Local" на "true". Таким образом при создании файлов страницы эти три файла будут скопированы в папку Bin Вашей страницы.
 + 
 +Указанные три файла находятся по адресу: Program Files (x86)\MySQL\MySQL Connector Net 6.3.7\Assemblies\v4.0\
 +(этот адрес соответствует 64битной системе с коннектором версии 6.3.7. и v4.0 .NET)
 + 
 +Должны быть добавлены все три файла. Иначе работать не будет.
 + 
 +=== Внести изменения в web.config ===
 + 
 +Добавить assembly:
<configuration> <configuration>
Строка 17: Строка 33:
<compilation> <compilation>
<assemblies> <assemblies>
- <add assembly="MySql.Data, Version=6.3.4.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/>+ <add assembly="MySql.Data, Version=6.3.7.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/>
<assemblies> <assemblies>
<compilation> <compilation>
Строка 23: Строка 39:
<configuration> <configuration>
-'''ВАЖНО!!!''' Значение атрибута assembly может отличаться в зависимости от версии спользуемой сборки. Пишите туда правильные данные. Если напишите фигню - получится фигня.+Если Вы используете другую версию коннектора, то необходимо соответственно изменить поле Version. Остальные данные остаются неизменными.
-=== Добавить строку подключения ===+Добавить определение Data Provider:
-В web.config, примерно так:+ <system.data>
 + <DbProviderFactories>
 + <clear />
 + <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data,Version=6.3.7.0, Culture=neutral,PublicKeyToken=c5687fc88969c44d" />
 + </DbProviderFactories>
 + </system.data>
 + 
 +Добавить строку подключения (она добавляется автоматически при добавлении ADO.NET Entity Data Model в проект) и выглядит так (добавляйте лучше не вручную):
<connectionStrings> <connectionStrings>
- <add+ <add name="EntitiesName" connectionString="metadata=res://*/DataClasses.csdl|res://*/DataClasses.ssdl|res://*/DataClasses.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=servername;User Id=USERID;password=PASSWORD;Persist Security Info=True;database=DATABASENAME&quot;" providerName="System.Data.EntityClient" />
- name="connName" +
- connectionString="server=XXX;User Id=YYY;database=ZZZ;password=***"+
- providerName="MySql.Data.MySqlClient"/>+
</connectionStrings> </connectionStrings>
-=== Добавить определение Data Provider ===+Если при попытке создать соединение у вас возникает ошибка, то временно измените формат представления данных в языках системы с русского на English (United States). Тогда ошибки не будет и соединение будет создано (это известная ошибка в коннекторе).
- +
-В web.config, примерно так:+
- +
- <system.data>+
- <DbProviderFactories>+
- <remove invariant="MySql.Data.MySqlClient" /> +
- <add +
- name="MySQL Data Provider" +
- invariant="MySql.Data.MySqlClient" +
- description=".Net Framework Data Provider for MySQL" +
- type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.3.4.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D" />+
- </DbProviderFactories>+
- </system.data> +
- +
-'''ВАЖНО!!!''' Значение атрибута '''invariant''' отсюда должно совпадать со значением атрибута '''providerName''' из строки подключения. Строчка с удалением '''invariant''' нужна для исключения ситуаций, когда похожий провайдер добавлен уровнем выше, что бы не было ошибок из-за дублирования провайдеров.+
[[Категория:WEB-сервер IIS]] [[Категория:WEB-сервер IIS]]

Версия 20:40, 19 сентября 2011

Пример ошибки

Ошибка Unable to find the requested .Net Framework Data Provider. It may not be installed. может возникать в случае использования mySQL .NET Connector при неразмещении его на сайте. Ниже описано что делать.

пример ошибки

Добавить файлы MySQL .NET Connector в проект

Вам необходимо:

1. Зайти в серверную часть Вашего проекта в Visual Studio.

2. Открыть там вкладку References.

3. Добавить в нее следующие три файла:

  MySql.Data.dll
  MySql.Data.Entity.dll
  MySql.Data.Web.dll

4. В отношении каждого из трех этих файлов выбрать показать свойства (Properties) и изменить там параметр "Copy Local" на "true". Таким образом при создании файлов страницы эти три файла будут скопированы в папку Bin Вашей страницы.

Указанные три файла находятся по адресу: Program Files (x86)\MySQL\MySQL Connector Net 6.3.7\Assemblies\v4.0\ (этот адрес соответствует 64битной системе с коннектором версии 6.3.7. и v4.0 .NET)

Должны быть добавлены все три файла. Иначе работать не будет.

Внести изменения в web.config

Добавить assembly:

<configuration>
  <system.web>
    <compilation>
      <assemblies>
        <add assembly="MySql.Data, Version=6.3.7.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/>
      <assemblies>
    <compilation>
  <system.web>
<configuration>

Если Вы используете другую версию коннектора, то необходимо соответственно изменить поле Version. Остальные данные остаются неизменными.

Добавить определение Data Provider:

<system.data>
   <DbProviderFactories>
   <clear />
   <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data,Version=6.3.7.0, Culture=neutral,PublicKeyToken=c5687fc88969c44d" />
   </DbProviderFactories>
</system.data>

Добавить строку подключения (она добавляется автоматически при добавлении ADO.NET Entity Data Model в проект) и выглядит так (добавляйте лучше не вручную):

<connectionStrings>
  <add name="EntitiesName" connectionString="metadata=res://*/DataClasses.csdl|res://*/DataClasses.ssdl|res://*/DataClasses.msl;provider=MySql.Data.MySqlClient;provider connection string="server=servername;User Id=USERID;password=PASSWORD;Persist Security Info=True;database=DATABASENAME"" providerName="System.Data.EntityClient" />
</connectionStrings>

Если при попытке создать соединение у вас возникает ошибка, то временно измените формат представления данных в языках системы с русского на English (United States). Тогда ошибки не будет и соединение будет создано (это известная ошибка в коннекторе).

Личные инструменты