2013-01-21 27 views
0

我一直在使用MVC,CodeFirst和MySql Connector .NET一段時間。到目前爲止,一切都像魅力一樣。導出通過CodeFirst創建的數據庫

但現在,我面臨着一個問題,我無法解決......由於某些原因,我不得不將我正在使用的數據庫移動到另一臺服務器上。我試圖以更簡單的方式來做到這一點:通過.sql文件。

將數據庫的內容導入到新的服務器後,數據庫結構很好。但是,當網站試圖通過EF訪問數據庫的內容時,會出現奇怪的問題(MySql.Data.MySqlClient.MySqlException:'字段列表'中的未知列'Extent3.item')

試圖找到答案來解決我的問題,我意識到這種問題是由於沒有正確使用FK創建的關係而發生的。但是,在我的情況下,它不適用,因爲在我嘗試移動數據庫之前,一切都在工作。然後,我想到有關數據庫模式的一些信息存儲在連接器的某個地方(實際上,我不知道這是否是真的......但我認爲我在某處讀了類似的東西)。所以,也許,問題是當我試圖將數據庫導出到.sql文件時,我錯過了一些信息。

所以...我想知道我是否按照正確的步驟輸出和導入我的數據庫的內容到新的服務器。如果我不是,我該如何繼續?如果我是,我的問題的根源是什麼?

謝謝!

+1

你可以嘗試的是在導致異常的查詢上執行'.ToString()'。這將爲您提供正在爲您的查詢生成的Sql查詢。現在針對數據庫運行Sql並查看是否有相同的錯誤。分析Sql查詢並與數據庫模式進行比較。這應該指向你正確的方向。 – Pawel

+0

嗯,我已經完成了你的建議......並且它根本沒有幫助我......當我在舊數據庫中使用查詢字符串時,它就像一個魅力。但是,當我在新數據庫中使用它時:「字段列表」中出現「未知列'Extent3.item'」。有趣的是:舊數據庫中沒有「Extent3」表...但是,查詢仍然有效......我不知道會發生什麼...... –

+0

最後,您的建議幫助我找到錯誤哈哈。謝謝,@Pawel。 –

回答

0

問題已解決。

服務器有不同的SO。舊的,運行Windows。新的運行Linux。默認情況下,在Linux MySQL中打開表名區分大小寫,而舊數據庫不區分大小寫。所以,我只需要在新數據庫中禁用區分大小寫的表名。