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

Posted

技术标签:

【中文标题】java.sql.SQLException:无法从底层数据库获取连接! — HSQLDB【英文标题】:java.sql.SQLException: Connections could not be acquired from the underlying database! — HSQLDB 【发布时间】:2015-11-25 09:58:28 【问题描述】:

我已经安装了SQL Workbench/J Build 118,并登录了Liferay PortalHSQL数据库。

然后我关闭了 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 Driver (v.2.3.3)

【问题讨论】:

【参考方案1】:

我通过更改%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

而且我成功启动了服务器。

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于java.sql.SQLException:无法从底层数据库获取连接! — HSQLDB的主要内容,如果未能解决你的问题,请参考以下文章

java跑一段时间后就报:Caused by: java.sql.SQLException: 无法从套接字读取更多的数据。

Bug解决:获取JDBC连接失败;嵌套异常是java.sql.SQLException:无法从底层数据库获取连接

大神们 无法获取JDBC连接,嵌套异常java.sql.SQLException:连接无法从基础数据库中获得! 怎么具体解决??

高分求解,急!!!Java连接Oracle10g 问题 java.sql.SQLException: 无法从套接字读取更多的数据

java.sql.SQLException:无法使用 executeQuery() 发出数据操作语句。 23

响应消息:java.sql.SQLException:无法转换为内部表示:jmeter