[A] MySql.Data.MySqlClient.MySqlConnection无法强制转换为[B] MySql.Data.MySqlClient.MySqlConnection

Ric*_*icL 6 c# mysql nhibernate exception spring-mvc

当我将我的应用程序上传到服务器进行测试时,我收到了这个奇怪的莫名其妙的错误.从我研究的,它似乎是由冲突的MySql.Data引起的,我上传的副本属于:6.3.7.0.

我怎么能解决这个问题?我想只是把它放在垃圾箱里会"覆盖"GAC中的那个?

NHibernate.Exceptions.GenericADOException:无法执行查询[SELECT this_.Id as Id18_0_,this_.Email as Email18_0_,

(等属性)

FROM Userthis_ WHERE this_.Email =?和this_.Password =?]位置参数:#0> WvewHQlNRyQNKjBAtPR1AwrWQj0nwfmIflO + r4mCJQWA1jZ9zRvefcGz6ZA69b3v#1> 97403BA77F7C26BEC6B4F0A4F8509E02848CCD7DCF61D7DF5D79C3AAB2760E6AE1EB26F5D10D384E069F8C6089C47D3F1F0F17E7EBF30F71A68A39DF8863646F

[SQL:SELECT this_.Id为Id18_0_,this_.Email为Email18_0_,

(等属性)

FROM Userthis_ WHERE this_.Email =?和this_.Password =?] --->

System.InvalidCastException:[A] MySql.Data.MySqlClient.MySqlConnection无法强制转换为[B] MySql.Data.MySqlClient.MySqlConnection.类型A源自'MySql.Data,Version = 6.2.3.0,Culture = neutral,PublicKeyToken = c5687fc88969c44d',位于'默认'位置'C:\ Windows\assembly\GAC_MSIL\MySql.Data\6.2.3.0__c5687fc88969c44d\MySql.Data.dll".类型B源自位于'C:\ Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP的上下文'Default'中的'MySql.Data,Version = 6.3.7.0,Culture = neutral,PublicKeyToken = c5687fc88969c44d'. NET文件\ root\cb584441\17e039bb\assembly\dl3\6b14fe89\804a4095_b2c0cc01\MySql.Data.DLL'.

在在System.Data.Common.DbCommand.System.Data.IDbCommand.set_Connection(的IDbConnection值)NHibernate.AdoNet.AbstractBatcher.Prepare(IDbCommand的CMD)MySql.Data.MySqlClient.MySqlCommand.set_DbConnection在NHibernate.AdoNet(的DbConnection值) NHibernate.Loader.Letader.DoQuery(ISessionImplementor session,QueryParameters queryParameters,Boolean returnProxies)的NHibernate.Loader.Loader.GetResultSet(IDbCommand st,Boolean autoDiscoverTypes,Boolean callable,RowSelection selection,ISessionImplementor session)中的.AbstractBatcher.ExecuteReader(IDbCommand cmd)在NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor会话,queryParameters queryParameters,布尔returnProxies)在NHibernate.Loader.Loader.DoList(ISessionImplementor会话,queryParameters queryParameters)---内部异常堆栈跟踪---在NHibernate.Loader结束. NHibernate.Loader.Loader.ListIgnoreQue中的Loader.DoList(ISessionImplementor会话,QueryParameters queryParameters)ryCache(ISessionImplementor会话,QueryParameters queryParameters)在NHibernate.Loader.Loader.List(ISessionImplementor会话,QueryParameters queryParameters,ISet的1 querySpaces, IType[] resultTypes) at NHibernate.Impl.SessionImpl.List(CriteriaImpl criteria, IList results) at NHibernate.Impl.CriteriaImpl.List(IList results) at NHibernate.Impl.CriteriaImpl.UniqueResult[T]() at NHibernate.Criterion.QueryOver1.SingleOrDefault()在NHibernate.Criterion.QueryOver`1.NHibernate.IQueryOver.SingleOrDefault()

Die*_*ego 20

几年之后我遇到了同样的问题!

我的服务器已经在gac中安装了MySql Connector 6.4.6版本,但是我正在使用6.8.3版本,我得到了"无法转换错误",我修复了将以下部分添加到.config文件中

<system.data>
    <DbProviderFactories>
      <!-Removes the dll installed in gac-->
      <remove invariant="MySql.Data.MySqlClient" />

      <!-Add the dll copied in the bin folder-->
      <add name="MySQL" description="ADO.Net driver for MySQL" invariant="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data"/>
    </DbProviderFactories>
</system.data>
Run Code Online (Sandbox Code Playgroud)


Fis*_*aen 0

正如预期所示,您正在使用两个不同版本的 MySql。版本6.2.3.0和版本6.3.7.0。从这一点开始,我只能猜测:也许您正在使用用不同版本的 MySql 构建的 dll(并且它允许并排安装)。