Java H2 数据库应用
Java Application with H2 Database
我有一个 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。
看起来我的 table 在我的 Raspberry Pi 上不存在,但是当我查看我的 H2 数据库的浏览器界面时,table 在那里。
我的连接是使用您在 .getConnection 方法中看到的字符串创建的(从 java.sql.DriverManager 导入)。
DriverManager.getConnection("jdbc:h2:~/test","sa","");
正如我所说,该应用程序在我的 Windows 10 台电脑上运行良好。
我使用的库:
- 用于打印的 pdfbox-app-2.0.0-RC3
- h2-1.4.190 用于连接数据库
我没有使用像 ~/test 这样的动态路径,而是使用像 /home/pi 这样的固定路径来解决问题。
软代码显式路径
tilde (~) 的扩展并不完全标准。
有趣……我第一次看到that example in the H2 doc的时候还关心这个。我依稀记得遇到过其他情况,波浪号作为“我家 directory/folder”的符号失败了,与 H2 或 JDBC.
无关
对于我自己的工作,出于我模糊的偏执,我一直在使用这个软编码调用而不是我的 H2 中的波浪号 JDBC URL:
System.getProperty( "user.home" )
像这样。
String jdbcUrl = "jdbc:h2:" + System.getProperty( "user.home" ) + "/test" , "scott" , "tiger" );
参见Oracle Tutorial for more info on System
and Properties
。
当我看到 localhost
由于底层库之间的某些相互作用而无法解决的情况时,这个问题让我想起了一个类似的问题,迫使显式使用 127.0.0.1
。
如果您有时间,深入了解 H2 源代码以发现波浪符号扩展在 Pi 上失败的确切位置可能会很有趣。关于 Pi 的 Java 实现?或者 Pi 的 Linux 中的库被 Java 调用?
我有一个 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。
看起来我的 table 在我的 Raspberry Pi 上不存在,但是当我查看我的 H2 数据库的浏览器界面时,table 在那里。
我的连接是使用您在 .getConnection 方法中看到的字符串创建的(从 java.sql.DriverManager 导入)。
DriverManager.getConnection("jdbc:h2:~/test","sa","");
正如我所说,该应用程序在我的 Windows 10 台电脑上运行良好。
我使用的库:
- 用于打印的 pdfbox-app-2.0.0-RC3
- h2-1.4.190 用于连接数据库
我没有使用像 ~/test 这样的动态路径,而是使用像 /home/pi 这样的固定路径来解决问题。
软代码显式路径
tilde (~) 的扩展并不完全标准。
有趣……我第一次看到that example in the H2 doc的时候还关心这个。我依稀记得遇到过其他情况,波浪号作为“我家 directory/folder”的符号失败了,与 H2 或 JDBC.
无关对于我自己的工作,出于我模糊的偏执,我一直在使用这个软编码调用而不是我的 H2 中的波浪号 JDBC URL:
System.getProperty( "user.home" )
像这样。
String jdbcUrl = "jdbc:h2:" + System.getProperty( "user.home" ) + "/test" , "scott" , "tiger" );
参见Oracle Tutorial for more info on System
and Properties
。
当我看到 localhost
由于底层库之间的某些相互作用而无法解决的情况时,这个问题让我想起了一个类似的问题,迫使显式使用 127.0.0.1
。
如果您有时间,深入了解 H2 源代码以发现波浪符号扩展在 Pi 上失败的确切位置可能会很有趣。关于 Pi 的 Java 实现?或者 Pi 的 Linux 中的库被 Java 调用?