2011-12-22 69 views
2

當我將應用程序上傳到服務器進行測試時,我收到了這個奇怪的莫名其妙的錯誤。從我所研究的情況來看,這似乎是由MySql.Data衝突引起的,我上傳的副本屬於:6.3.7.0。[A] MySql.Data.MySqlClient.MySqlConnection不能轉換爲[B] MySql.Data.MySqlClient.MySqlConnection

我該如何解決這個問題?我以爲只是把它放在垃圾箱裏會'覆蓋'GAC中的那個?

NHibernate.Exceptions.GenericADOException:無法執行查詢[SELECT this_.Id如Id18_0_,this_.Email如Email18_0_,

(等屬性)

FROM User THIS_ WHERE this_.Email =?和this_.Password =? ]位置參數:#0> WvewHQlNRyQNKjBAtPR1AwrWQj0nwfmIflO + r4mCJQWA1jZ9zRvefcGz6ZA69b3v#1> 97403BA77F7C26BEC6B4F0A4F8509E02848CCD7DCF61D7DF5D79C3AAB2760E6AE1EB26F5D10D384E069F8C6089C47D3F1F0F17E7EBF30F71A68A39DF8863646F

[SQL:SELECT 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來源於位置'C:\ Windows \ assembly \ GAC_MSIL \ MySql.Data \ 6.2.3.0__c5687fc88969c44d \'上下文'Default'中的'MySql.Data,Version = 6.2.3.0,Culture = neutral,PublicKeyToken = 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 Files \ root \ cb584441 \ 17e039bb \ assembly \ dl3 \ 6b14fe89 \ 804a4095_b2c0cc01 \ MySql.Data.DLL'。

在MySql.Data.MySqlClient.MySqlCommand.set_DbConnection(的DbConnection值)System.Data.Common.DbCommand.System.Data.IDbCommand.set_Connection(的IDbConnection值)NHibernate.AdoNet.AbstractBatcher.Prepare(IDbCommand的CMD)在NHibernate.Loader.Loader.DoQuery(ISessionImplementor會話,QueryParameters queryParameters)上的NHibernate.AdoNet.AbstractBatcher.ExecuteReader(IDbCommand cmd)在NHibernate.Loader.Loader.GetResultSet(IDbCommand st,Boolean autoDiscoverTypes,Boolean callable,RowSelection selection,ISessionImplementor session) ,布爾returnProxies)NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor會話,QueryParameters queryParameters,布爾returnProxies)在NHibernate.Loader.Loader.DoList(ISessionImplementor會話,QueryParameters queryParameters)---結束內部異常堆棧跟蹤---在NHibernate.Lo在NHibernate.Loader.Loader.Loader.List(ISessionImplementor session,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.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor會話,QueryParameters queryParameters)中的ader.Loader.DoList(ISessionImplementor會話,QueryParameters queryParameters) NHibernate.Criterion.QueryOver`1.NHibernate.IQueryOver.SingleOrDefault()

+0

您是否已經部署了版本bin並在服務器上安裝了另一個版本? – Sam 2011-12-22 14:22:40

+0

嗨,山姆,我的版本是6.3.7.0,我知道肯定。我認爲服務器在GAC中已經有6.2.3.0。我怎麼能使它工作?有小費嗎? – RicL 2011-12-22 14:28:27

回答

0

正如預測所說,您正在使用兩個不同版本的MySql。版本6.2.3.0和版本6.3.7.0。從這一點上我只能猜測:也許你正在使用一個使用不同版本的MySql構建的dll(並且它允許並排安裝)。

+0

嗨@Fischermaen,那我該怎麼做?我認爲服務器上運行的是6.2.3.0。 6.3.7.0是我自己的電腦的副本。我試圖刪除bin文件夾中的Mysql.data,我得到YSOD說dll丟失。 – RicL 2011-12-22 14:27:36

+0

@RicL:您必須在您的電腦上使用與服務器上相同的版本。這是唯一的解決方案。 – Fischermaen 2011-12-22 14:31:06

+0

是否意味着我需要獲取6.2.3.0的mysql.data並將其放入我的項目中? – RicL 2011-12-22 14:35:18

12

我得到了同樣的問題,但幾年後!

我的服務器在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> 
+0

爲我工作。這個答案應該被接受。 – 2015-10-21 10:02:42

+0

+ for ADOConnection 2016-03-10 08:11:53

+0

也適用於我。 – Hamad 2017-12-16 08:32:22

相關問題