我正在以tcp/多用户模式运行带有H2数据库的Glassfish 4.1服务器。我试图以编程方式更新单例bean中的表。我总是得到以下例外:
org.h2.jdbc.JdbcSQLException: Timeout trying to lock table "GLOBALS"; SQL statement: ALTER TABLE "PUBLIC".GLOBALS ADD STARTFLAG VARCHAR(512) [50200-176]我知道表是锁定的,因为其中一个容器管理的实体管理器似乎在该表上有一个打开的连接。但是在alter语句的时候,没有任何连接的必要.
因此,我想知道是否有可能使用容器管理的JPA关闭所有jdbc连接?
下面是用于启动/连接到H2数据库的初始化字符串:
jdbc:h2:tcp://localhost/~/datastore/database;AUTO_SERVER=TRUE;MVCC=TRUE 但到目前为止没有成功..。
任何想法,高度赞赏-谢谢提前!
发布于 2015-01-09 12:37:03
出现在我脑海中的解决方案是关闭服务器并重新打开连接。
如果您正在使用java配置,则可以使用server.stop()
import org.h2.tools.Server;
...
// start the TCP Server
Server server = Server.createTcpServer(args).start();
...
// stop the TCP Server
server.stop();如果您要通过您的URL创建db。您可以创建一个bat文件并从您的应用程序中以编程方式调用它。
java org.h2.tools.Server -tcpShutdown tcp://localhost:9092您可以从H2网站找到更多信息。
https://stackoverflow.com/questions/27848077
复制相似问题