Tomcat 中的 HyperSQL 数据库在 Linux 重启后被删除

Posted

技术标签:

【中文标题】Tomcat 中的 HyperSQL 数据库在 Linux 重启后被删除【英文标题】:HyperSQL database in Tomcat is deleted after Linux restart 【发布时间】:2019-10-21 13:06:01 【问题描述】:

我正在使用 HyperSQL 作为我的 Tomcat 应用程序的数据库。数据库服务器从我的应用程序运行,文件的位置在 webapps/myapp-folder 中。

问题是,在 Linux (Centos 7) 重新启动后,数据库以某种方式发生冲突并重新创建数据库(所有数据都被删除)。如果我只重启 Tomcat,一切正常。

我的 tomcat.service:

[Unit]
Description=Tomcat 8.5 servlet container
After=syslog.target network.target

[Service]
Type=forking
User=tomcat
Group=tomcat

Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"

ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target

数据库文件夹有完全的创建和删除权限,组和所有者是tomcat用户。

HSQL 服务器已启动,当我的应用启动并使用 Hibernate 处理数据库时:

    Properties properties = new Properties();
    properties.setProperty(Environment.DRIVER, "org.hsqldb.jdbcDriver");
    properties.setProperty(Environment.URL, "jdbc:hsqldb:hsql://localhost:9001/my_repository"); 
    properties.setProperty(Environment.USER, xxx);
    properties.setProperty(Environment.PASS, yyy);
    properties.setProperty(Environment.DIALECT, "org.hibernate.dialect.HSQLDialect");
    properties.setProperty(Environment.HBM2DDL_AUTO, "update");

可能出了什么问题?为什么电脑重启后数据总是被删除?

感谢您的任何回答。

【问题讨论】:

【参考方案1】:

尝试更改属性“HBM2DDL_AUTO”以验证,甚至删除它。 此属性负责“自动模式生成”。 您可以找到其他值或信息here

【讨论】:

这不是问题,只是有时会发生。问题将在于 linux 重新启动时 HSQL DB 的一些不良结束连接。 H2 嵌入式效果更好。 :(

以上是关于Tomcat 中的 HyperSQL 数据库在 Linux 重启后被删除的主要内容,如果未能解决你的问题,请参考以下文章

HyperSQL中如何支持支持SqlServer的“..”?

如何在 Hypersql 数据库(HSQLDB)中设置 Rank 函数

HyperSQL / HSQLDB 数据库能抵抗密码攻击吗?

如何在 Hypersql 数据库(HSQLDB)中选择多列但仅按一列分组?

HyperSQL 链接参数中文件的路径

无法以新用户身份连接到 HyperSQL / HSQLDB 数据库