MySQL - ошибка Unable to find the requested .Net Framework Data Provider
Материал из 1GbWiki.
Версия 20:40, 19 сентября 2011 (править) Argar (Обсуждение | вклад) (Текст изменен мною. Решил написать, т.к. только в такой комбинации у меня заработала страница.) ← К предыдущему изменению |
Версия 20:44, 19 сентября 2011 (править) (отменить) Argar (Обсуждение | вклад) К следующему изменению → |
||
Строка 27: | Строка 27: | ||
=== Внести изменения в web.config === | === Внести изменения в web.config === | ||
- | Добавить assembly: | + | Добавить assembly MySql: |
<configuration> | <configuration> | ||
Строка 33: | Строка 33: | ||
<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.7.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/> | <add assembly="MySql.Data, Version=6.3.7.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/> | ||
<assemblies> | <assemblies> | ||
Строка 38: | Строка 39: | ||
<system.web> | <system.web> | ||
<configuration> | <configuration> | ||
+ | |||
+ | (до добавления в проекте уже есть assembly System.Data.Entity, если Вы добавляли ADO.NET Entity Data Model в проект) | ||
Если Вы используете другую версию коннектора, то необходимо соответственно изменить поле Version. Остальные данные остаются неизменными. | Если Вы используете другую версию коннектора, то необходимо соответственно изменить поле Version. Остальные данные остаются неизменными. |
Версия 20:44, 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 MySql:
<configuration> <system.web> <compilation> <assemblies> <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <add assembly="MySql.Data, Version=6.3.7.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/> <assemblies> <compilation> <system.web> <configuration>
(до добавления в проекте уже есть assembly System.Data.Entity, если Вы добавляли ADO.NET Entity Data Model в проект)
Если Вы используете другую версию коннектора, то необходимо соответственно изменить поле 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). Тогда ошибки не будет и соединение будет создано (это известная ошибка в коннекторе).