H2数据库的Java应用程序

时间:2016-03-07 21:30:12

标签: java database h2 raspbian

我有一个java应用程序,它从H2数据库中检索数据。 数据库和应用程序安装在同一台计算机上。 现在,当我在Windows 10 PC下运行应用程序时,一切正常,但是当我将Java应用程序复制到我的Raspberry Pi 2 B(Raspbian Jessie)时,它不再起作用了。 在两个系统上,我安装了H2数据库,我可以通过浏览器界面访问它,还有java。

Raspberry Pi上的错误是:

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

看起来我的Raspberry Pi上不存在我的表,但是当我查看我的H2数据库的浏览器界面时,该表就在那里。

我的连接是使用.getConnection方法中可以看到的字符串创建的(从java.sql.DriverManager导入)。

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

就像我说的,应用程序在我的Windows 10 pc上运行良好。

我使用的库:

  • pdfbox-app-2.0.0-RC3用于打印
  • h2-1.4.190用于连接数据库

2 个答案:

答案 0 :(得分:1)

不使用像〜/ test这样的动态路径,而是使用像/ home / pi这样的固定路径来解决问题。

答案 1 :(得分: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" );

有关Oracle TutorialSystem的更多信息,请参阅Properties

当我看到由于底层库之间的某些相互作用导致localhost无法解决的情况时,这个问题让我想起了类似的问题,迫使明确使用127.0.0.1

如果你有时间,可以通过挖掘H2源来发现Pi上波浪线扩展的确切位置。关于Pi的Java实现的一些事情?或者Pi的Linux中的库是由Java调用的吗?