java - 如何修复 : Embedded H2 Database "NonTransientError: Unable to read the page at position" error?

标签 java sql database h2

我正在创建一个带有嵌入式 H2 数据库的 JavaFX 程序,该数据库将用于处理用户登录名和密码。使用 Intellij Ultimate,我有一个可以从工具栏运行的数据库。此外,我几乎可以肯定我有正确的 JDBC 驱动程序和 URL。数据库从 Intellij 的数据库控制台运行良好。当我尝试使用 Java 代码访问数据库时发生错误。我正在使用数据库类来处理我的数据库连接。

我收到了 JdbcSQLNonTransientException , 一般错误:

Illegal state exception: unable to read the page at position



引起:java.lang.IllegalStateException:不支持的类型 17。

我的编译器中显示的代码行,导致错误:Connection conn = DriverManager.getConnection(DB_URL, "sa", "");
我曾尝试在任何地方找到类似的问题,但找不到相关问题。我已尝试尽可能简化我的类(class)以隔离问题并简单地建立连接。我删除了我的项目并尝试重新开始。

简体 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”表中检索数据。代码未编译时出现上述错误。

编辑:如果我使用版本 1.4.199 H2 而不是 1.4.200 ,问题就迎刃而解了。我在这里发现了一个几乎相同的问题:https://github.com/h2database/h2database/issues/2078 .此链接与我的堆栈跟踪相同。我还没有解决版本 1.4.200 的问题

最佳答案

https://github.com/h2database/h2database/issues/2078
您应该使用相同的驱动程序,因此在使用 1.4.196(IDEA 使用)进行修改后,无法使用 1.4.200(当前 spring 数据版本)读取它。所以我的崩溃场景是在 IDEA 中打开数据库,驱动程序为 1.4.196,而 spring 应用程序代码使用 1.4.200。所以它不会重新开始。您可以在 pom.xml 中为您的应用程序声明 1.4.196 版本,但看起来您将受限于此版本,我不知道您如何完全修复您的数据库。

关于java - 如何修复 : Embedded H2 Database "NonTransientError: Unable to read the page at position" error?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58453106/

相关文章:

swing - GridBagLayout 多按钮+边框

java - 如何允许多个用户同时连接到我的 H2 数据库?

mysql - 糟糕的 MySQL 数据库设计?

java - : Hand over points to GameOverActivity

java - 用 Java 写入文件。帮我打码

sql - 使用主机变量向 Pro*C 中的静态 SQL 语句提供 "IN"条件?

sql - 在不同环境中使用不同数据库名称的跨数据库查询?

MySQL创建包含日期最大的所有数据的 View

c++ - 如何使用 SOCI 库将变量绑定(bind)到准备好的语句?

mysql - SQL 中的 CASE 语句给出不正确的值