Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java H2嵌入式数据库在部署时丢失表/数据_Java_Database_Deployment_H2 - Fatal编程技术网

Java H2嵌入式数据库在部署时丢失表/数据

Java H2嵌入式数据库在部署时丢失表/数据,java,database,deployment,h2,Java,Database,Deployment,H2,所以我有一个应用程序,它使用一个数据库,现在我需要在应用程序中使用一个嵌入式数据库,这样你所要做的就是安装程序,数据库已经存在(这样客户端就不必安装mysql服务器、wamp、xampp等的副本来运行mysql数据库)及其所有信息 我已经让应用程序导出到一个jar文件中,然后将其转换成一个exe文件,并在我的电脑上运行,但是当我将其复制到另一台电脑并运行时,数据库就在那里,但表数据和我放入的表都不见了。我做错了什么 提前感谢有多种选择。一种选择是: 使用SQL语句从当前数据库创建SQL脚本文件

所以我有一个应用程序,它使用一个数据库,现在我需要在应用程序中使用一个嵌入式数据库,这样你所要做的就是安装程序,数据库已经存在(这样客户端就不必安装mysql服务器、wamp、xampp等的副本来运行mysql数据库)及其所有信息

我已经让应用程序导出到一个jar文件中,然后将其转换成一个exe文件,并在我的电脑上运行,但是当我将其复制到另一台电脑并运行时,数据库就在那里,但表数据和我放入的表都不见了。我做错了什么


提前感谢

有多种选择。一种选择是:

  • 使用SQL语句从当前数据库创建SQL脚本文件
  • 将文件
    script.sql
    从用户主目录复制到应用程序的源目录,以便将其作为资源进行捆绑。使用应用程序源代码的根目录(因为这是最简单的解决方案)
  • 在目标计算机中,使用数据库URL
    jdbc:h2:~/data;INIT=runscript来自“classpath:script.sql”
    。这将打开数据库并运行脚本。它将脚本作为资源读取

还有其他选项,但它们需要您。

查看类似的问题(使用H2中的导出数据库),我发现上面的答案很有用,但无法使脚本正常工作。 我的数据库是mySQL。 将thet数据库导出为适合我的脚本的方法是从linux shell:

mysqldump -u[user] [databasename] > exportscriptfile.sql
然后,我不得不对脚本进行一些润色工作,以便H2能够阅读它(请参阅上的类似内容)

下面是我使用jdbc EmbeddedDatabaseBuilder进行的基于java的spring配置。此处创建为bean的数据源可用于任何jdbc调用:

@Configuration
public class H2DBConfig  {

@Bean
public DataSource dataSource() {
    return new EmbeddedDatabaseBuilder()
        .setType(EmbeddedDatabaseType.H2)
        .addScript("classpath:exportscriptfile.sql")
        .build();
}

听起来好像你不小心重新初始化了数据库。也许这个SO线程会提供一些启示:检查数据库文件的路径,如图所示。如果数据库嵌入到应用程序jar中,它将不可写。运行H2时有很多选项。您确定没有在“内存”模式下运行它吗?在这种情况下,当安装完成时,所有内容都将丢失。通常问题是数据库URL。您的数据库URL是什么,数据库文件的完整路径和名称是什么?