Не могу подключиться к MySQL из проекта asp.net mvc для работы

Я пытаюсь заставить приложение MVC 3 использовать базу данных MySql, но я продолжаю получать ошибки, я сделал следующую строку подключения и поставщика в моем файле Web.Config

<connectionStrings>
    <add name="DefaultConnection" connectionString="server=xxxxx.unoeuro.com; userid=xxxxx_dk;password=xxxxx;pooling=yes;Database=xxxxx_dk_db" providerName="MySql_db"/>
</connectionStrings>

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

Но когда я пытаюсь его использовать (просто пытаюсь использовать пользователя регистрации по умолчанию, который находится в проекте по умолчанию), я получаю эту ошибку

Произошла ошибка при создании обработчика раздела конфигурации для system.data: Столбец «InvariantName» должен быть уникальным. Значение «MySql.Data.MySqlClient» уже присутствует.

Но я, если я удалю DbProviderFactories, я просто получаю сообщение об ошибке, что отсутствует поставщик данных, так что это не потому, что я продублировал его где угодно.


person Mech0z    schedule 17.09.2011    source источник
comment
вырежьте раздел DbProviderFactories из вашего web.config и опубликуйте сообщение об ошибке, которое вы получаете после этого действия. Это не должно быть нужно.   -  person tugberk    schedule 17.09.2011
comment
Если я удалю это, я просто получу сообщение «Невозможно найти запрошенный поставщик данных .Net Framework». Он может быть не установлен.   -  person Mech0z    schedule 17.09.2011


Ответы (3)


Основываясь на ответе @Ladislav Mrnka, ошибка, вероятно, возникает из-за того, что параметр в Web.config конфликтует с параметром в machine.config. Чтобы устранить ошибку, добавьте тег «удалить» в свой Web.config следующим образом.

<system.data>
    <DbProviderFactories>
        <remove invariant="MySql.Data.MySqlClient"/>
        <add name="MySql_db" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=5.1.54.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
    </DbProviderFactories>
</system.data> 
person Theophilus    schedule 08.01.2014

Имя провайдера в строке подключения должно быть установлено как инвариантное имя фабрики провайдеров. Также ошибка, скорее всего, говорит о том, что MySql.Data.MySqlClient уже установлен на вашем компьютере и зарегистрирован в Machine.config.

person Ladislav Mrnka    schedule 17.09.2011
comment
Я следовал руководству и добавил свою базу данных MySql в качестве соединения OCDB в моем проводнике сервера, теперь я просто сомневаюсь, как должна выглядеть моя строка подключения. - person Mech0z; 17.09.2011
comment
Вы не можете использовать ODBC напрямую, так как он не поддерживается EF. - person Ladislav Mrnka; 17.09.2011
comment
Хорошо, тогда это еще один тупик, как мне найти Machine.config? не могу найти в своем проекте - person Mech0z; 17.09.2011
comment
Похоже, вы новичок в .NET, не так ли? Machine.config — это файл конфигурации верхнего уровня с областью действия машины — он находится в папке установки .NET (%systemroot%\Microsoft.NET). Этот каталог будет содержать каталоги x86 и x64 с подкаталогами для каждой версии .NET. Выберите правильную версию и откройте каталог Config, чтобы найти файл machine.config и файл web.config верхнего уровня для каждого уровня доверия. - person Ladislav Mrnka; 17.09.2011
comment
Нет, я много сделал на C # и кое-что на asp.net, но я использовал Mssql только через TFS и SQL Express, никогда не использовал внешние базы данных. - person Mech0z; 17.09.2011
comment
Но вы, очевидно, не знаете основ вашей платформы разработки - знание о существовании Machine.config и почему он существует, это такие базовые знания. - person Ladislav Mrnka; 18.09.2011

Установите последнюю версию MySQL для Visual Studio и найдите совместимую версию для Connector/NET.

Например, я использовал MySQL для Visual Studio 1.2.7. и Connector/NET 6.7.5, 6.8.3 или 6.9.x. для Visual Studio 2013

удалите все остальные версии MySQL для Visual Studio и Connector/NET.

После этого добавьте новый элемент-> модель данных объекта ADO.Net и создайте файл edmx. вы можете увидеть system.data и system.data.entity в вашей справочной папке проекта.

В вашем коде MyDatabaseEntities myDB = new MyDatabaseEntities(); используйте myDB для доступа к вашим данным.

Если вы создаете фреймворк, скопируйте все под тегом из app.config и вставьте его в файл web.config вашего основного проекта (запускаемого проекта). Необходимо помнить, что этот тег должен быть первый дочерний элемент тега.

person Nikhil Dinesh    schedule 29.03.2018