H2 createTcpServer() не создает сервер?

#java #database #h2 #creation

#java #База данных #h2 #создание

Вопрос:

прочитав документацию по H2, я написал это простое приложение для создания базы данных H2 в локальном каталоге:

 public static void main(String[] args) throws SQLException {

    String path = "C:/Temp/H2/";
    File fpath = new File(path);

    fpath.mkdirs();
    FileUtils.recursiveDelete(fpath);

    String dbName = "tata";
    String connection = "jdbc:h2:file:"   path   dbName;

    Server server = Server.createTcpServer(connection);

    server.start();
    server.stop();

}
  

Эта программа работает нормально, но когда я проверяю целевой каталог, базы данных там нет… (я использую версию 1.3.161)

Комментарии:

1. Вы должны использовать Server.createTcpServer()

2. @Thomas но разве это не то, что я сделал?

3. @JVestry нет, вы используете Server.createTcpServer(connection) не Server.createTcpServer()

Ответ №1:

Вам действительно нужно получить доступ к базе данных, файлы создаются лениво:

 server.start();
DriverManager.getConnection(connection);
server.stop();
  

Добавленная строка в середине создает tata.h2.db файл там, где ожидалось (протестировано с 1.3.155).

Комментарии:

1. Да, и на самом деле серверу не нужно знать о базе данных, это означает использование Server.createTcpServer() ;

2. @Thomas Извините, это неоднозначно, что вы подразумеваете под «серверу не нужно знать о базе данных»? Документацию трудно интерпретировать. Он не предоставляет достаточно информации для правильной интерпретации.

3. @JVestry Я постараюсь улучшить документацию.