我正在使用HQLnate和HSQL DB。我有一个名为“testdb”的基于文件的HSQL数据库。
当我尝试连接到我的HSQL文件串URL时,我的应用程序挂起。
它在Hibernate输出之后立即挂起:
INFO: using driver: org.hsqldb.jdbcDriver at URL: jdbc:hsqldb:file:testdb
INFO: connection properties: {user=SA, password=****}
请注意,内存中的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>
答案 0 :(得分:1)
当第一次尝试连接尝试打开数据库时,它会创建一个.lck文件。此文件包含定期更新的时间戳,并防止其他进程同时连接到数据库。如果没有连接其他数据库,则不会阻止连接。因此,您无需删除.lck文件。
如果在连接尝试期间未创建.lck文件,则表示未建立连接。文件访问权限可能存在问题。
您始终可以通过与GUI DatabaseManager的连接来检查数据库本身。
答案 1 :(得分:0)
数据库有大表,获取数据库对象需要时间。