【问题标题】:Where does H2's Embedded Databases Store the data?H2 的嵌入式数据库在哪里存储数据?
【发布时间】:2012-03-16 17:37:15
【问题描述】:

所以我最近才开始学习数据库如何工作,如何使用 SQL 等。并决定开始在我的 Java 应用程序(特别是 H2 数据库)中实现一个嵌入式数据库,并且似乎在我正在编码的计算机上运行良好。

当我转移到另一台计算机继续编码时,我注意到即使我移植了嵌入式数据库文件 (h2-*.jar) 我在第一台计算机上创建的所有准备好的表都不存在于第二个。不知何故,我有一种先入之见,即通过数据库引擎生成的实际数据也存储在嵌入式数据库文件中。

所以我的问题是,数据库中的数据实际存储在哪里?是否可以准备一个已经包含数千条记录的数据库并将其与实际应用程序一起分发?

我还应该提到,我在第一台计算机上连接到数据库的方式是通过 JDBC 连接,即 URL:JDBC:h2:~/test,当我尝试在第二台计算机上连接到该数据库时,它确实做到了不存在。

谢谢!

【问题讨论】:

    标签: java database jdbc h2 embedded-database


    【解决方案1】:

    h2-*.jar 只是数据库的一个引擎(代码)。它是只读的,不存储任何信息。 H2 中的数据可以存储在内存中,也可以存储在磁盘中的指定文件中。您实际上是在指定一个:

    JDBC:h2:~/test/
    

    您将在test 子目录下的主目录中找到您的数据库。只需将这些文件复制到另一台计算机上的主目录,H2 就会找到它们,只要它使用相同的 URL。

    【讨论】:

      【解决方案2】:

      阅读FAQ

      数据库文件存储在哪里?

      当使用像 jdbc:h2:~/test 这样的数据库 URL 时,数据库存储在用户目录中。对于 Windows,这通常是 C:\Documents and Settings\<userName>C:\Users\<userName>。如果未设置基本目录(如jdbc:h2:./test),则数据库文件存储在启动应用程序的目录(当前工作目录)中。从开始菜单使用 H2 控制台应用程序时,这是<Installation Directory>/bin。可以在数据库 URL 中设置基本目录。可以使用固定或相对路径。使用 URL jdbc:h2:file:./data/sample 时,数据库存储在目录数据中(相对于当前工作目录)。如果该目录尚不存在,则会自动创建该目录。也可以使用完全限定的目录名称(对于 Windows,使用驱动器名称)。示例:jdbc:h2:file:C:/data/test

      【讨论】:

      • 如果不是很明显,在 Linux/MacOSX 系统上,H2 数据库文件存储在 JDBC URL 的路径下,因此 ~/test 可以在 $HOME/test.*.db 找到。
      【解决方案3】:

      在windows中,你需要用这个值来设置JDBC URL:

      JDBC URL: jdbc:h2:mem:testdb
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-03-05
        • 1970-01-01
        • 2013-02-03
        • 2016-01-22
        • 2023-03-19
        • 2011-09-17
        • 2019-12-22
        相关资源
        最近更新 更多