Hibernate не может подключиться к файловой базе данных HSQLDB, зависает - PullRequest
1 голос
/ 11 июня 2011

Я использую Hibernate с HSQL DB.У меня есть файловая база данных HSQL с именем "testdb".

Когда я пытаюсь подключиться к URL-адресу строки файла HSQL, приложение зависает.

Оно зависает сразу после вывода Hibernate:

INFO: using driver: org.hsqldb.jdbcDriver at URL: jdbc:hsqldb:file:testdb
INFO: connection properties: {user=SA, password=****}

Обратите внимание, что проблема не возникает с In-Memory HSQL.Если URL-адрес "jdbc: hsqldb: mem : testdb", все работает.Так что это проблема настройки файла.

Я проверил в Hibernate, что БД существует, файл HSQL существует, у меня есть мои таблицы и я могу их просматривать.

На самом деле, даже когда я указываюнесуществующий файл в File :, он все еще зависает.Что я делаю неправильно?Спасибо

Мой hibernate.cfg.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
  <session-factory>
     <!-- Database connection settings -->
        <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
        <property name="connection.url">jdbc:hsqldb:file:testdb</property>
        <property name="connection.username">SA</property>
        <property name="connection.password"></property>

        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">2</property>

        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.HSQLDialect</property>

        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>

        <!-- Drop and re-create the database schema on startup -->
        <property name="hbm2ddl.auto">create</property>

  </session-factory>
</hibernate-configuration>

Ответы [ 2 ]

1 голос
/ 18 июня 2011

Когда первая попытка подключения пытается открыть базу данных, создается файл .lck.Этот файл содержит регулярно обновляемую метку времени и не позволяет другим процессам одновременно подключаться к базе данных.Это не препятствует соединению, если никакая другая база данных не подключена.Поэтому вам не нужно удалять файл .lck.

Если во время попытки подключения файл .lck не был создан, это означает, что соединение не было установлено.Могут быть проблемы с правами доступа к файлу.

Вы всегда можете проверить саму базу данных, подключившись к GUI DatabaseManager.

0 голосов
/ 12 ноября 2014

База данных содержит огромные таблицы, для извлечения объектов базы данных требуется время.

...