我正在尝试使用来自Java应用程序的H2数据库。
我通过H2控制台创建了数据库及其表,然后尝试使用
Connection con = DriverManager.getConnection("jdbc:h2:~/dbname", "username", "password");
但是,我收到以下错误:
线程“主”org.h2.jdbc.JdbcSQLException:数据库中的异常可能已经在使用:“被另一个进程锁定”。可能的解决方案:关闭所有其他连接;使用服务器模式90020-161
我试图删除dbname.lock.db
文件,但它是自动重新创建的。
我如何解锁数据库以使用我的Java程序?
发布于 2011-11-16 21:33:31
H2仍然在运行(我可以保证)。您需要为多个用户(如-> )使用TCP连接。
<property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/C:\Database\Data\production;"/>
或
DriverManager.getConnection("jdbc:h2:tcp://localhost/server~/dbname","username","password");
这也意味着您需要以TCP模式启动服务器。亲爱的,这在文档中是非常直接的。
强制终止进程(javaw.exe for Windows),并确保任何可能启动该进程的应用程序都被关闭。你有一个主动锁。
发布于 2017-12-15 08:25:15
我也有同样的问题。在Intellj中,当我想使用h2数据库时,当我的程序运行时,我得到了相同的错误。为了解决这个问题,我将连接url改为
spring.datasource.url=jdbc:h2:file:~/ipinbarbot
至:
spring.datasource.url=jdbc:h2:~/ipinbarbot;DB_CLOSE_ON_EXIT=FALSE;AUTO_SERVER=TRUE
然后我的问题就消失了。现在我可以连接到"ipinbarbot“数据库时,我的程序是。如果您使用Hibernate,也不要忘记有:
spring.jpa.hibernate.ddl-auto = update
古德勒克
发布于 2015-03-15 07:30:16
我使用h2db和一个测试T24 tafj应用程序,我也遇到了同样的问题,但我设法通过识别运行h2的应用程序(当我试图建立数据库连接时启动)来解决这个问题。
ps aux|grep java
将提供的产出如下:
sysadmin 22755 3.2 0.1 5189724 64008 pts/3 Sl 08:28 0:00 /usr/java/default/bin/java -server -Xmx2048M -XX:MaxPermSize=256M -cp h2-1.3.175.jar:/r14tafj/TAFJ/dbscripts/h2/TAFJFunctions.jar org.h2.tools.Server -tcp -tcpAllowOthers -baseDir /r14tafj/t24/data
现在,用它的进程id来终止它:
kill -9 22755
最后,删除锁文件:
rm -f dbname.lock.db
https://stackoverflow.com/questions/8158969
复制相似问题