2015-07-22 2 views
1

Я обнаружил странное поведение при запросе класса Edge с использованием OrientDB (community-2.1-rc5). База данных возвращает тот же самый край с тем же самым @rid и точно такими же данными, дважды. Мой инстинкт говорит, что это ошибка ...Дублированные ребра с тем же @rid в OrientDB

Это запрос

SELECT FROM E WHERE @class='LIKES' AND (out IN [#12:0,#12:221]) AND in=#36:1913 

И это то, что orientDB студия возвращается

http://s29.postimg.org/hwruv0zif/Captura.png

Это не имеет никакого смысла. Если я перейду к вершине и запрошу отношения LIKES, она вернет только один реестр ... Кто-нибудь столкнулся с такой проблемой?

Это база данных, я использую, если это помогает

https://www.dropbox.com/sh/pkm28cfer1pwpqb/AAAVGeL1eftOGR4o0todTiAha?dl=0

ответ

0

Чтобы получить помощь с этой ошибкой, вы должны сделать запрос на присоединение к группе Google. StackOverflow - это не лучшее место для получения справки об этой ошибке.

Проблема в том, что вы как-то продублировали свой край по ошибке. Orientdb позволяет вам делать это по неизвестной причине.

Вот обсуждение ошибка на группе orientdb Google: https://groups.google.com/forum/#!topic/orient-database/cAR7yUjCZcI

В обсуждении Лука (создатель orientdb) говорит, что это:

"the problem is that without a transaction the creation of edge could 
be dirty. OrientDB tries to fix dirty reference, so maybe that's the 
reason why the next time the exception is raised. I've changed the 
default behavior of all SQL commands against Graphs to be always 
transactional" 

Обновление до последней версии orientdb будет хорошо идеально. Возможно, ошибка исправлена.

+0

Я начну использовать транзакции прямо по пути. Вы рекомендуете отдельные транзакции для вставки вершин и кромок? Или только одна транзакция, вставляющая вершины в первую очередь, а края - последние. Спасибо за все. –

+0

Здесь есть документация для транзакций в графике api: http://orientdb.com/docs/2.0/orientdb.wiki/Graph-Database-Tinkerpop.html#transactions – AlexB

+0

Но, как сказал Люк, по умолчанию поведение всех команд SQL снова. Графы должны быть всегда транзакционными. – AlexB