当我将应用程序上传到服务器进行测试时,我收到了这个奇怪的莫名其妙的错误。从我研究的,它似乎是由冲突的MySql.Data引起的,我上传的副本属于:6.3.7.0。
我该如何解决这个问题?我想把它放在垃圾箱里会“覆盖”GAC中的那个?
NHibernate.Exceptions.GenericADOException:无法执行查询[SELECT this_.Id as Id18_0_,this_.Email as Email18_0 _,
(等属性)
FROM User
this_ WHERE this_.Email =?和this_.Password =? ]位置参数:#0> WvewHQlNRyQNKjBAtPR1AwrWQj0nwfmIflO + r4mCJQWA1jZ9zRvefcGz6ZA69b3v#1> 97403BA77F7C26BEC6B4F0A4F8509E02848CCD7DCF61D7DF5D79C3AAB2760E6AE1EB26F5D10D384E069F8C6089C47D3F1F0F17E7EBF30F71A68A39DF8863646F
[SQL:选择this_.Id为Id18_0_,this_.Email为Email18_0_,
(等属性)
FROM User
this_ 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'。
位于NHibernate.AdoNet.AbstractBatcher.Prepare(IDbCommand cmd)处的System.Data.Common.DbCommand.System.Data.IDbCommand.set_Connection(IDbConnection值)处的MySql.Data.MySqlClient.MySqlCommand.set_DbConnection(DbConnection值)处NHibernate.Loader.Letader.DoQuery(ISessionImplementor session,QueryParameters queryParameters,NHibernate.Loader.GetResultSet(IDbCommand st,Boolean autoDiscoverTypes,Boolean callable,RowSelection selection,ISessionImplementor session)中的NHibernate.AdoNet.AbstractBatcher.ExecuteReader(IDbCommand cmd)。 NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session,QueryParameters queryParameters,Boolean returnProxies)的NHibernate.Loader.Loader.DoList(ISessionImplementor session,QueryParameters queryParameters)---内部异常堆栈跟踪结束---在NHibernate处的布局returnProxies) NHibernate.Loader.Loader.ListIgnore上的.Loader.Loader.DoList(ISessionImplementor session,QueryParameters queryParameters) NHibernate.Loader.Loader.List中的QueryCache(ISessionImplementor会话,QueryParameters queryParameters)(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.QueryOver
1.SingleOrDefault()at NHibernate.Criterion.QueryOver`1.NHibernate.IQueryOver.SingleOrDefault()
答案 0 :(得分:17)
多年后我遇到了同样的问题!
我的服务器已经在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>
答案 1 :(得分:0)
正如预期所说,你使用的是两个不同版本的MySql。版本6.2.3.0
和版本6.3.7.0
。从这一点开始,我只能猜测:也许你正在使用一个使用不同版本的MySql构建的DLL(它允许并排安装)。
答案 2 :(得分:0)
我遇到了同样的问题,版本18和19之间存在冲突。在web.config中这样做可以解决此问题。将新版本设置为您计算机中的版本。
<dependentAssembly>
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.0.18.0" newVersion="8.0.19.0" />
</dependentAssembly>