H2 数据库文件消失
Posted
技术标签:
【中文标题】H2 数据库文件消失【英文标题】:H2 database files disappear 【发布时间】:2018-08-12 14:43:32 【问题描述】:在完成一些集成测试后,我发现我预期的 H2 数据库文件不存在。
使用“jdbc:h2:/tmp/casper”的 url,我希望有一个 /tmp/casper.mv.db 文件,但没有。
原因是我在初始化数据库时使用了“drop all objects delete files”,经过我所有的工作,在关闭数据源时测试后消失了。
我对这个问题的回答中的演示。
【问题讨论】:
【参考方案1】:包org.javautil.h2;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.sql.Connection;
import java.sql.Statement;
import org.junit.Test;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
public class H2DropAllObjectsTest
@Test
public void casper() throws Exception
final HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:h2:/tmp/casper");
config.setUsername("sr");
config.setPassword("tutorial");
config.setAutoCommit(true);
HikariDataSource dataSource = new HikariDataSource(config);
Connection connection = dataSource.getConnection();
File f = new File("/tmp/casper.mv.db");
assertTrue (f.exists());
Statement s = connection.createStatement();
s.execute("drop all objects delete files");
assertTrue (f.exists());
s.execute("create table a (b number(9))");
/* do a lot of work */
connection.commit();
s.close();
connection.close();
assertTrue (f.exists());
dataSource.close();
assertFalse (f.exists());
【讨论】:
【参考方案2】:只需将您的数据库处理为update
,不要使用create/drop
dataSource:
dbCreate: update
【讨论】:
以上是关于H2 数据库文件消失的主要内容,如果未能解决你的问题,请参考以下文章