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

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

(Различия между версиями)
Перейти к: навигация, поиск
Версия 20:44, 19 сентября 2011 (править)
Argar (Обсуждение | вклад)

← К предыдущему изменению
Текущая версия (14:52, 1 ноября 2011) (править) (отменить)
Dmach (Обсуждение | вклад)
м (Правки Argar (обсуждение) откачены к версии Dmach)
 
Строка 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.+=== Прописать сборку ===
-2. Открыть там вкладку References.+В web.config, примерно так:
- +
-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 MySql:+
<configuration> <configuration>
Строка 33: Строка 17:
<compilation> <compilation>
<assemblies> <assemblies>
- <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />+ <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>
Строка 40: Строка 23:
<configuration> <configuration>
-(до добавления в проекте уже есть assembly System.Data.Entity, если Вы добавляли ADO.NET Entity Data Model в проект)+'''ВАЖНО!!!''' Значение атрибута assembly может отличаться в зависимости от версии спользуемой сборки. Пишите туда правильные данные. Если напишите фигню - получится фигня.
-Если Вы используете другую версию коннектора, то необходимо соответственно изменить поле Version. Остальные данные остаются неизменными.+=== Добавить строку подключения ===
-Добавить определение Data Provider:+В web.config, примерно так:
- <system.data>+ <connectionStrings>
- <DbProviderFactories>+ <add
- <clear />+ name="connName"
- <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" />+ connectionString="server=XXX;User Id=YYY;database=ZZZ;password=***"
- </DbProviderFactories>+ providerName="MySql.Data.MySqlClient"/>
- </system.data>+ </connectionStrings>
-Добавить строку подключения (она добавляется автоматически при добавлении ADO.NET Entity Data Model в проект) и выглядит так (добавляйте лучше не вручную):+=== Добавить определение Data Provider ===
- <connectionStrings>+В web.config, примерно так:
- <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" />+ 
- </connectionStrings>+ <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>
-Если при попытке создать соединение у вас возникает ошибка, то временно измените формат представления данных в языках системы с русского на English (United States). Тогда ошибки не будет и соединение будет создано (это известная ошибка в коннекторе).+'''ВАЖНО!!!''' Значение атрибута '''invariant''' отсюда должно совпадать со значением атрибута '''providerName''' из строки подключения. Строчка с удалением '''invariant''' нужна для исключения ситуаций, когда похожий провайдер добавлен уровнем выше, что бы не было ошибок из-за дублирования провайдеров.
[[Категория:WEB-сервер IIS]] [[Категория:WEB-сервер IIS]]

Текущая версия

Содержание

[править] Пример ошибки

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

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

[править] Скопировать сборку на сервер

Сборка MySql.Data.dll должна быть скопирована в каталог bin вашего сайта.

[править] Прописать сборку

В web.config, примерно так:

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

ВАЖНО!!! Значение атрибута assembly может отличаться в зависимости от версии спользуемой сборки. Пишите туда правильные данные. Если напишите фигню - получится фигня.

[править] Добавить строку подключения

В web.config, примерно так:

<connectionStrings>
  <add
    name="connName" 
    connectionString="server=XXX;User Id=YYY;database=ZZZ;password=***"
    providerName="MySql.Data.MySqlClient"/>
</connectionStrings>

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

В 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 нужна для исключения ситуаций, когда похожий провайдер добавлен уровнем выше, что бы не было ошибок из-за дублирования провайдеров.

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