如何修复:嵌入式H2数据库“非瞬态错误:无法在位置读取页面”错误?
我正在创建一个带有嵌入式H2数据库的JavaFX程序,该数据库将用于处理用户登录名和密码。使用Intellij Ultimate,我有一个可以从工具栏运行的数据库。此外,我几乎可以肯定我有正确的JDBC驱动程序和URL。数据库从 Intellij 的数据库控制台运行良好。当我尝试使用Java代码访问数据库时发生错误。我正在使用数据库类来处理我的数据库连接。
我收到 一般错误:JdbcSQLNonTransientException
非法状态异常:无法读取位置处的页面
由以下原因引起:java.lang.IllegalStateException: Unsupported type 17。
导致错误的编译器中显示的代码行:Connection conn = DriverManager.getConnection(DB_URL, "sa", "");
我试图在任何地方找到类似的问题,但找不到相关的问题。我尝试尽可能地简化我的类,以隔离问题并简单地建立连接。我删除了我的项目,并试图重新开始。
产生问题的简化类:DatabaseManager
public class DatabaseManager {
static final String JDBC_DRIVER = "org.h2.Driver";
static final String DB_URL = "jdbc:h2:D:/trant/Documents/Java Practice/Order A Car2/res/userDatabase";
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName("org.h2.Driver");
Connection conn = DriverManager.getConnection(DB_URL, "sa", "");
Statement st = conn.createStatement();
st.executeUpdate("SELECT * FROM JOBS");
conn.close();
}
}
我希望连接到 H2 数据库并从表“JOBS”中检索数据。代码未使用上述错误进行编译。
编辑:如果我使用H2的1.4.199
版本而不是1.4.200
,问题就会消失。我在这里发现了一个几乎相同的问题:https://github.com/h2database/h2database/issues/2078。此链接具有与我的堆栈跟踪相同的堆栈跟踪。我尚未解决版本 1.4.200 的问题