Cannot connect to mysql from visual studio 2015

27,571

Solution 1

In order for VS 2015 to connect to MySql you need to be using a later version of the MySql libraries. While that seems like a pretty simple answer, in all honesty I have run into several problems along the way. With that in mind I am going to write out the 1 process that has consistently worked for me as far as getting EF working with MySql and VS2015. So, without further ado, here are the steps I have been taking in order to get this to work.

1) Make sure the MySql connector installation is updated

2) Create your web project

3) Open Nuget

4) Install Entity Framework

5) Search for MySql

6) Install MySql.Data

7) Install MySql.Data.Entity

8) Install MySql.Data.Entities

9) Install MySql.Web

10) Go to the references for the project and delete MySql.Data.Entity.EF6

11) Check the versions of the MySql.Data and MySql.Web libraries. If they are under 6.9.6 delete them as well

12) Add a new reference by browsing to the install location for the mysql connector for your version of the .NET framework (mine is C:\Program Files (x86)\MySQL\Connector.NET 6.9\Assemblies\v4.5) and grabbing the MySql.Data.Entity.EF6.dll (my version is 6.9.6, keep that in mind when we change the web.config later)

13) If the other libraries were also older versions, add references to them by browsing to the packages folder in your solution and grabbing the files from their respective folders. I do not normally have to do this.

14) Now the Web.config will need to be edited. The first step is to replace the entity framework section with this code (change the version number to your current version. Please note that I found this snippet on the web a couple weeks ago and do not have the original link. I apologize to the original poster of this information.)

<entityFramework>
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
<providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</providers>
</entityFramework>

15) Make sure your DbProviderFactories section matches

<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.9.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>

16) Save and build

I am not sure how many of these steps are actually required but after finally getting it once I had to actually get some work done and didn’t have time to narrow things down further. Hopefully that gets you moving.

P.S. If after all of that you go through the wizard and it just disappears before it shows you the tables in the database to create entities from then it could be one of three problems I have run into along the way. The database server cannot be contacted. The user does not have the needed permissions on the database. The wrong version of MySql.Data.Entity.EF6 was added as a reference or the version number is wrong in the web.config. If I grab this file from the packages directory of my solution I often run into this aborted-wizard-with-no-error-message problem. Grabbing it from the MySql install directory has worked fine for me every time.

Solution 2

It works for me. I have Visual Studio 2015, and just installed latest version of connector: http://dev.mysql.com/downloads/windows/visualstudio/

Read this more carefully: http://dev.mysql.com/doc/relnotes/mysql-for-visual-studio/en/visual-studio-news-1-2-4.html

They mention that version of "Microsoft ASP.NET MVC" could be a problem. Wrong is that they say VS2015 ships with version 5, but I have version 4 installed with VS2015 Enterprise final.

Share:
27,571
ditoslav
Author by

ditoslav

&lt;3

Updated on July 09, 2022

Comments

  • ditoslav
    ditoslav almost 2 years

    So I have already spent about 2 days trying fix this. I have succeeded in fixing this on my workplace pc and can't get it to work on my home pc. I have read about a dozen SO articles and oracle forums articles and whatnot but still it does not work.

    I have 1.2.4 msql for visual studio which is supposed to be a release which works on vs2015. I have installed mysql connector 6.8.6 and have first tried to add mysql to my project via nuget but after not being able to find a 6.8.6 version (there are 6.8.3 and 6.9.7 for one package and then again something else for the other...) I have referenced to my C:\Program Files (x86)\MySQL\MySQL Connector Net 6.8.6\Assemblies\v4.5 and have taken the 4 files there and have copied them ove the whole fkin computer. I have pasted it like everywhere. The vs2013 private assembly, my packages folder which I do not even reference to anyway and I think some vs2015 folder. I have ran a search for Mysql.Data and have pasted these files in every folder that came up as a result. I have rebuilt the solution for about 100-200 times and have cried for at least 20 minutes.

    What do I have to do to get my new ADO.Net Entity Data Model generated?

    I keep getting this stupid enter image description here image and I have really absolutely no idea what to do next. I just want to code but every time I start doing something I keep wasting days on tools not working. Do I really have to code in notepad so that I am sure it's my fault that something isn't working?

    This is my app.Config file. I do not have anything else in my project.

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
        <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
        <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
      </configSections>
      <entityFramework>
        <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
          <parameters>
            <parameter value="v12.0" />
          </parameters>
        </defaultConnectionFactory>
        <providers>
          <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
        </providers>
      </entityFramework>
      <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.8.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
        </DbProviderFactories>
      </system.data>
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-6.8.6.0" newVersion="6.8.6.0" />
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
      <connectionStrings>
        <add name="KPlusConnectionString" connectionString="server=dito.ninja;user id=xxx;password=xxx;database=xxx" providerName="MySql.Data.MySqlClient" />
      </connectionStrings>
    </configuration>
    
  • ditoslav
    ditoslav over 8 years
    Thank you SO much. I have already fixed everything and have done all the steps you've noted but I have a feeling many other people will need this "definitive" guide to installing mysql
  • Samko
    Samko over 8 years
    Very happy to hear you have it running. It was so frustrating when I had to work through this that I just had to register an account and answer when I read your question. Happy coding!
  • Rob Sedgwick
    Rob Sedgwick over 8 years
    I tried the above in VS2015 but never did manage to get it to work. However when I used VS2013 and did the same thing it worked and then I opened in VS2015 and it looks fine in the later version.
  • Jhourlad Estrella
    Jhourlad Estrella about 8 years
    Any reason why delete MySql.Data.Entity.EF6 after installing it?
  • Samko
    Samko about 8 years
    At the time of writing it was installing a lower version number than required which is why I was removing it and then adding it from the other location (so I could get a higher / the right version). I have not tried this process recently so it could be working without that step now. I hope all is well.
  • Nils Guillermin
    Nils Guillermin over 7 years
    Which Web.config file are you talking about? I have an App.config, is that the same?
  • Samko
    Samko over 7 years
    Web.config appears in web projects and app.config is found in other types of projects. The process detailed, if required at all anymore, should work similarly in both. I hope all is well.