我有一个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上运行良好。
我使用的库:
答案 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 Tutorial和System
的更多信息,请参阅Properties
。
当我看到由于底层库之间的某些相互作用导致localhost
无法解决的情况时,这个问题让我想起了类似的问题,迫使明确使用127.0.0.1
。
如果你有时间,可以通过挖掘H2源来发现Pi上波浪线扩展的确切位置。关于Pi的Java实现的一些事情?或者Pi的Linux中的库是由Java调用的吗?