java.sql.SQLException:无法从底层数据库获取连接! - HSQLDB

时间:2015-11-25 09:58:28

标签: liferay hsqldb sql-workbench-j

我已安装SQL Workbench/J Build 118并登录 Liferay Portal HSQL 数据库。

然后我关闭了SQL Workbench而没有对数据库进行任何更改。 我重新启动了Liferay tomcat服务器,然后出现以下错误:

ERROR [localhost-startStop-1][DialectDetector:124] java.sql.SQLException:
Connections could not be acquired from the underlying database!

和这个警告:

WARN  [C3P0PooledConnectionPoolManager[identityToken->3c8jofUN]-HelperThread-#4][BasicResourcePool:1851]
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@3249a129 --
Acquisition Attempt Failed!!! Clearing pending acquires.
While trying to acquire a needed new resource, we failed to succeed more than
the maximum number of allowed acquisition attempts (3).
Last acquisition attempt exception:
java.sql.SQLException: error in script file line: 
7 unexpected token: CONFLICT required: DEADLOCK

<子> PS。我使用的是最新版本的HSQL JDBC驱动程序(v.2.3.3)

2 个答案:

答案 0 :(得分:4)

我通过更改%LIFERAY_DIR%/data/hsql/lportal.script文件中的这一行来解决了这个问题:

SET DATABASE TRANSACTION ROLLBACK ON CONFLICT TRUE

SET DATABASE TRANSACTION ROLLBACK ON DEADLOCK TRUE

然后我删除了这一行:

SET DATABASE SQL AVG SCALE 0

我成功启动了服务器。

答案 1 :(得分:1)

Liferay中的hsql适用于快速演示。对于任何超出此范围的内容,我建议使用单独的数据库。使用MySql和Postgresql,有两个可用的免费选项。 hsql存储在一个文件中,我不确定向后兼容性(如果你的工作台使用的驱动程序版本不同于Liferay),并且两个进程无法同时访问一个文件。

当然,您也可以将hsql作为服务器应用程序运行,但恕我直言会将其拉伸太远。只需安装一个合适的数据库,您就拥有了所需的所有工具。今天的计算机没有真正的开销。