Почему исключение выдает при закрытии соединения? - PullRequest
1 голос
/ 06 мая 2011

Я пытаюсь использовать 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)

Где не так?

1 Ответ

5 голосов
/ 06 мая 2011

Наконец-то я обнаружил ошибку в Orientdb.Он не может правильно обрабатывать путь к Windows и не выдает хороших сообщений об ошибках.

Если я использую local:c:/orientdb, а не local:c:\orientdb, все в порядке.

Я сообщил об этом команде orientdb.

...