orientdb을 사용하고 있습니다.연결을 닫는 중 예외가 발생하는 이유는 무엇입니까?
package models;
import java.util.List;
import com.orientechnologies.orient.core.db.object.ODatabaseObjectPool;
import com.orientechnologies.orient.core.db.object.ODatabaseObjectTx;
import com.orientechnologies.orient.core.sql.query.OSQLSynchQuery;
public class User {
public String name;
public static void main(String[] args) {
String uri = "local:c:\\orientdb";
ODatabaseObjectTx db = ODatabaseObjectPool.global().acquire(uri, "admin", "admin");
db.getEntityManager().registerEntityClass(User.class);
User user = new User();
user.name = "aaa";
db.save(user);
List<?> list = db.query(new OSQLSynchQuery<Long>("select count(*) from User"));
System.out.println(list);
db.commit();
db.close(); // ****** throws exception
}
}
그러나 마지막 줄 db.close()
예외가 발생합니다 : 샘플은 매우 간단 잘못
Exception in thread "main" com.orientechnologies.common.concur.lock.OLockException: Can't release a database URL not acquired before. URL: c:\orientdb
at com.orientechnologies.orient.core.db.ODatabasePoolAbstract.release(ODatabasePoolAbstract.java:81)
at com.orientechnologies.orient.core.db.ODatabasePoolBase.release(ODatabasePoolBase.java:43)
at com.orientechnologies.orient.core.db.object.ODatabaseObjectTxPooled.close(ODatabaseObjectTxPooled.java:81)
at models.User.main(User.java:26)
를?
db.isClosed()는 commit() 후에 무엇을 반환합니까? – MeBigFatGuy
@MeBigFatGuy, 나는 그것을 orientdb의 버그로 발견했다. 내 대답을 참조하십시오 – Freewind
자바로 데이터베이스를 사용할 때도 똑같은 문제가 발생했습니다. 연결이 설정되지 않았기 때문에 예외가 발생했습니다. 따라서 연결을 시작하지 않고 닫을 수 없으므로 예외가됩니다. Freewind의 의견을 찾으면 OrientDB의 windows 경로를 사용하여 연결을 설정하는 동안 오류가 발생합니다. –