2010-03-21 16 views
3

最近我開始使用Linux(Ubuntu 9.10)而不是windows。我正在用Spring,MYSQL和jpa開發一個java web應用程序。但是,在安裝linux之前,我從數據庫中創建了一個備份文件,然後安裝了linux,安裝了MYSQL Query Browser和Administrator工具,並使用Admin工具恢復了備份文件,然後獲取了所有的表並從中做了一個簡單的select語句其中一個表,並得到正常的結果,一切似乎工作得很好。在linux下使用MYSQL獲取數據問題

有一個USER表,並且有一個namedQuery被定義爲通過userName來獲取用戶,問題是當我傳遞一個正確的userName時,我什麼也得不到!

我真的不知道是什麼問題!該應用程序在windows下完美運行!

請問誰能幫我解決這個問題?

預先感謝您。

回答

2

首先想到的是,MySQL表名在Linux上不區分大小寫,而在Windows上不區分大小寫。即這可能會在Windows工作:

SELECT ... FROM User ... 

,但在Linux上,你需要使用正確的情況下,作爲表名:

SELECT ... FROM USER ... 

,但沒有更多的信息這真的很難說。

+0

我正要添加,請記住,表格實際上是作爲文件存儲和訪問的。案例很重要。 MyTable!=所有情況下的mytable(赦免雙關語)。 +1。 – 2010-03-21 13:38:09

1

在Windows和Linux下有一些設置具有不同的默認設置,表名等的大小寫敏感性就是其中之一。這可能是一個非指定的設置在Windows上默認爲一個值,但在Linux下是另一個值。

0

你沒事,對我而言,我發現爲什麼我無法登錄傳遞userName! 問題是,當我從備份文件中恢復架構時,所有表都是使用小寫名稱創建的,例如,USER表是用戶,然後.. 當我啓動tomcat時,JPA會自動創建所有@Entity,因此它爲@Entity User創建一個User表,結果是我有兩個USER表,一個擁有所有數據的用戶表和一個空的User表,這是一個用於應用程序!這就是爲什麼我無法檢索任何數據,因爲實際上沒有數據可以從表中檢索。

解決此問題的解決方法我按照JPA的預期修改了重命名所有表的備份文件,以避免在啓動應用程序時再次創建它們。

我真的不知道是否有更好的解決方案,但它爲我工作。

最後,非常感謝您的幫助。