I downloaded MySQL Connector/Net 6.7.4 and MySQL for Visual Studio 1.0.2, and then followed these instructions to test it:
Running the application, I got this exception:
ConfigurationErrorsException: Failed to find or load the registered .Net Framework Data Provider.
Then I added references to the MySql.Data
and MySql.Data.Entity
libraries version 6.7.4.0 to my .NET 4.5 project. Now when I run the application, I get a different exception:
FileLoadException: Could not load file or assembly 'MySql.Data, Version=6.6.5.0,culture=neutral, PublicKeyToken=c5687fc88969c44d' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Note the version number, which is not the version of MySQL Connector that I have installed.
How do I get it working correctly?
The trick to solving this was:
MySql.Data
and MySql.Data.Entity
libraries of the correct version (6.7.4.0 for .NET 4.5, in my case) to the project.machine.config
with your editor run as administrator, and replace all occurences of MySQL version 6.6.5.0
by 6.7.4.0
.For the second step, note that there are multiple machine.config
files, one for each framework version (3.0, 3.5, 4.0) and architecture (32-bit, 64-bit). Also note that the machine.config
file for .NET 4.5 is in the .NET 4.0 folder. You can find the machine.config
files in:
C:\Windows\Microsoft.NET\Framework\\Config
And:
C:\Windows\Microsoft.NET\Framework64\\Config
If there are no references to MySQL in the machine.config
file, you might not have installed MySQL for Visual Studio. Either do that, or add the following to the app.config
file of your project:
<system.data>
<DbProviderFactories>
<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.7.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
Note however, that when you both install MySQL for Visual Studio
and add the above snippet to your app.config
file, then you'll get this exception:
ConfigurationErrorsException: Column 'InvariantName' is constrained to be unique. Value 'MySql.Data.MySqlClient' is already present.
I don't like to edit machine.config. Just add this redirect to web.config:
<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.6.5.0" newVersion="6.7.4.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Using this should stop the exception that Virtlink mentioned:
<system.data>
<DbProviderFactories>
<remove name="MySQL Data Provider" />
<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.7.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
Especially note the <remove name="MySQL Data Provider" />
line.
Download MYSQL 6.7.4.0 from HERE . Notice that your specific problem requires 6.7.4.0 and NOT other version !
Direct link is this .
Download and add the files to the reference folder of your solution .
This would probably solve your problem (it did for me , and yes , I know this can by a very annoying problem) .
Good luck :)
I realise this thread had an answer back in 2013 but I have just encountered this problem again. In my situation, I recently installed the Windows 10 Anniversary update. Didn't have an issue before this.
As per the answers above, it turns out my Machine.config file had been overwritten (I presume by the update).
For me once I restored the MySql Assembly information to the Machine.config file, it immediately started working again.
In particular the "Runtime" and "DbProviderFactories" sections had been wiped and had to be replaced. They were as follows (these will vary depending on the versions of the assemblies you are using):
Runtime Section:
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly xmlns="urn:schemas-microsoft-com:asm.v1"> <assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" /> <bindingRedirect oldVersion="6.7.4.0" newVersion="6.9.9.0" /> </dependentAssembly> <dependentAssembly xmlns="urn:schemas-microsoft-com:asm.v1"> <assemblyIdentity name="MySql.Data.Entity" publicKeyToken="c5687fc88969c44d" culture="neutral" /> <bindingRedirect oldVersion="6.7.4.0" newVersion="6.9.9.0" /> </dependentAssembly> <dependentAssembly xmlns="urn:schemas-microsoft-com:asm.v1"> <assemblyIdentity name="MySql.Web" publicKeyToken="c5687fc88969c44d" culture="neutral" /> <bindingRedirect oldVersion="6.7.4.0" newVersion="6.9.9.0" /> </dependentAssembly> </assemblyBinding> </runtime>
DbProviderFactories Section
<DbProviderFactories> <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.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> </DbProviderFactories>
Hope this helps anyone else coming across the same problem.
User contributions licensed under CC BY-SA 3.0