当使用“DELETE VERTEX…” SQL语句时,OrientDB并不会一次删除所有顶点。

4

我在VehicleHistoryGraph数据库中创建了一个类型为Message的顶点,并将50000个此类型的顶点加载到其中。

当我尝试使用以下SQL语句一次性删除所有顶点时 -

DELETE VERTEX MESSAGE

我收到了意外的错误提示,说有些顶点已经被删除了(但在加载后,我并没有删除任何顶点),而且这些顶点不会像预期一样全部删除(请见下文)。

orientdb> connect remote:localhost/databases/VehicleHistoryGraph admin admin

 Connecting to database [remote:localhost/databases/VehicleHistoryGraph] with user 'admin'...OK
orientdb {db=VehicleHistoryGraph}> DELETE VERTEX MESSAGE

Error: com.orientechnologies.orient.core.exception.OCommandExecutionException: Error on execution of command: sql.select from Message

Error: java.lang.IllegalStateException: The elements #26:38028 has already been deleted

Error: com.orientechnologies.orient.core.exception.ORecordNotFoundException: The record with id '#26:38028' not found

Error: com.orientechnologies.orient.core.exception.ORecordNotFoundException: The record with id '#26:38028' not found

orientdb {db=VehicleHistoryGraph}> SELECT COUNT(@rid) FROM Message

----+------+-----
#   |@CLASS|COUNT
----+------+-----
0   |null  |13546
----+------+-----

1 item(s) found. Query executed in 1.538 sec(s).
orientdb {db=VehicleHistoryGraph}> DELETE VERTEX MESSAGE

Delete record(s) '11896' in 107.861000 sec(s).

orientdb {db=VehicleHistoryGraph}> SELECT COUNT(@rid) FROM Message

----+------+-----
#   |@CLASS|COUNT
----+------+-----
0   |null  |1820
----+------+-----

1 item(s) found. Query executed in 0.167 sec(s).

orientdb {db=VehicleHistoryGraph}> DELETE VERTEX MESSAGE

Delete record(s) '1820' in 6.320000 sec(s).

orientdb {db=VehicleHistoryGraph}>

出了什么问题?为什么?是个bug吗?


你的图表似乎出问题了:可能是手动删除了一些边? - Lvca
我没有手动删除任何边缘,如果我这样做了,我希望数据库能够让我清理“破碎的图形”。 - user1837865
你正在使用哪个版本的OrientDB? - Luigi Dell'Aquila
我正在使用2.1.2版本。 - user1837865
1个回答

0

问题还存在吗?如果您尝试使用最新版本(从2.2.x开始),有两个有用的命令:

检查数据库(检查数据库的完整性。如果数据库包含图形,则会检查它们的一致性)

修复数据库(修复数据库)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接