我正在使用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 2011-05-06 03:59:51
@MeBigFatGuy,我發現它是一個orientdb的bug。看到我的回答 – Freewind 2011-05-06 06:34:25
當我在java中使用數據庫時遇到了同樣的情況,並且我得到了異常,因爲有可能連接沒有建立。所以,如果沒有入門,連接就無法關閉,因此是一個例外。我想在使用OrientDB中的windows路徑建立連接時會出現錯誤,因爲我發現Freewind的評論。 – 2011-05-06 07:03:33