2016-03-07 60 views
1

我有一個Java應用程序,它從H2數據庫中檢索數據。 數據庫和應用程序安裝在同一臺計算機上。 現在,當我運行我的Windows 10 PC下的應用程序一切正常,但是當我將java應用程序複製到我的Raspberry Pi 2 B(Raspbian Jessie)時,它不再工作。 在這兩個系統上,我安裝了H2數據庫,我可以通過瀏覽器界面訪問數據庫,也可以使用java。與H2數據庫的Java應用程序

在樹莓派的錯誤是:

Feb 26, 2016 2:39:26 AM HelperPackage.DatabaseConnection startConnection 
SEVERE: null 
org.h2.jdbc.JdbcSQLException: Table "PRODUKTE" not found; SQL statement: 
SELECT Name, Datum, Anzahl, Warnzeitpunkt, ID 
FROM PRODUKTE 
ORDER BY Datum; 

你可以看到整個錯誤消息here

它看起來像我的樹莓派不存在我的樹莓派,但當我看看我的H2數據庫的瀏覽器界面,表在那裏。

我的連接是使用可在.getConnection方法中看到的字符串(從java.sql.DriverManager導入)創建的。

DriverManager.getConnection("jdbc:h2:~/test","sa",""); 

就像我說的,該應用程序在我的Windows 10電腦上工作正常。

圖書館使用:

  • PDFBOX-APP-2.0.0-RC3打印
  • h2-1.4.190用於連接到數據庫
+1

我想驗證兩個系統連接到'{user.home}'中的同一個數據庫' – MadProgrammer

+0

這不是真正的數據庫。我在Windows電腦上安裝了一個H2數據庫,在我的Raspberry pi上安裝了一個。 除了創建表之外,我沒有在其中一個h2數據庫上配置任何內容,因此所有內容都應該提供相同的情況。 唯一的區別應該是操作系統。 –

+1

是的,但'〜/ test'會在每個系統的'{user.home}'中創建一個數據庫。當通過網絡界面瀏覽時,我會確保你連接到系統的正確數據庫 – MadProgrammer

回答

1

軟代碼明確的路徑

tilde (~)的擴張是不完全的標準。

有趣...當我第一次看到that example in the H2 doc時,我很擔心。我依稀記得遇到其他情況,其中代字號失敗作爲「我的主目錄/文件夾」的符號,與H2或JDBC無關。

對於我自己的工作,我的模糊偏執的,我一直在使用這種軟編碼調用,而不是在我的H2 JDBC URL波浪的:

System.getProperty("user.home") 

這樣的事情。

String jdbcUrl = "jdbc:h2:" + System.getProperty("user.home") + "/test" , "scott" , "tiger"); 

SystemProperties更多信息,請參見Oracle Tutorial


這個問題讓我想起了一個類似的問題時,我曾經見過localhost未能解決,因爲底層庫之間的一些相互影響,迫使明確使用127.0.0.1情況。

如果您曾經有過時間,可以通過挖掘H2源來發現Pi上代字號擴展失敗的位置,這可能很有趣。關於Pi的Java實現的一些事情?或者Pi的Linux中的庫被Java調用?

1

而不是使用動態路徑像〜/測試我使用了像/ home/pi這樣的固定路徑來解決問題。