【发布时间】:2018-08-12 14:43:32
【问题描述】:
在完成一些集成测试后,我发现我预期的 H2 数据库文件不存在。
使用“jdbc:h2:/tmp/casper”的 url,我希望有一个 /tmp/casper.mv.db 文件,但没有。
原因是我在初始化数据库时使用了“drop all objects delete files”,经过我所有的工作,在关闭数据源时测试后消失了。
我对这个问题的回答中的演示。
【问题讨论】:
标签: h2
在完成一些集成测试后,我发现我预期的 H2 数据库文件不存在。
使用“jdbc:h2:/tmp/casper”的 url,我希望有一个 /tmp/casper.mv.db 文件,但没有。
原因是我在初始化数据库时使用了“drop all objects delete files”,经过我所有的工作,在关闭数据源时测试后消失了。
我对这个问题的回答中的演示。
【问题讨论】:
标签: h2
包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());
}
}
【讨论】:
只需将您的数据库处理为update,不要使用create/drop
dataSource:
dbCreate: update
【讨论】: