H2数据库文件消失

时间:2018-08-12 14:43:32

标签: h2

完成一些集成测试后,我发现预期的H2数据库文件不存在。

使用“ jdbc:h2:/ tmp / casper”的URL,我希望有一个/tmp/casper.mv.db文件,但是没有。

原因是在初始化数据库时,我使用了“删除所有对象删除文件”的功能。在我完成所有工作之后,测试关闭数据源后,它消失了。

我对这个问题的回答。

2 个答案:

答案 0 :(得分:0)

包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());
    }

}

答案 1 :(得分:0)

只需处理您的数据库,因为update不用create/drop

dataSource:
            dbCreate: update