3

我在后端使用 janusGraph 连接到 gremlin-server 的 gremlin-console。我想重新创建具有多重性的 edgeLabel,所以我将脚本发送到 gremlin-server 并使用removeEdgeLabel()命令删除标签“hasNext”:

graph_creation_script="""
tx = graph.newTransaction();
g.V().drop().iterate();
g.E().drop().iterate();
g.tx().commit()

tx = graph.newTransaction();
a = tx.addVertex(label, "A");
b = tx.addVertex(label, "B");
tx.commit()

mgmt = graph.openManagement()
mgmt.getEdgeLabel("hasNext").remove()
// mgmt.makeEdgeLabel("hasNext").multiplicity(ONE2ONE).make()
//a.addEdge("hasNext",b);
mgmt.commit()
"""
:> @graph_creation_script

然后我注释掉该行mgmt.getEdgeLabel("hasNext").remove()并从行中删除注释符号 makeEdgeLabel(...)以创建新标签multiplicity(ONE2ONE)

...
// mgmt.getEdgeLabel("hasNext").remove()
mgmt.makeEdgeLabel("hasNext").multiplicity(ONE2ONE).make()
...

我得到错误:

Adding this property for key [~T$SchemaName] and value [rt▲hasNext] violates a uniqueness constraint [SystemIndex#~T$SchemaName]

所以似乎标签没有从模式中删除,但为什么会这样呢?

4

2 回答 2

0

最后,我通过命令删除所有模式/图形内容:

./bin/janusgraph.sh stop
./bin/janusgraph.sh clean

并且显然在 gremlin-console 中定义了 JanusGraph 操作:

:remote connect tinkerpop.server conf/remote.yaml
==>Configured localhost/10.11.221.123:8182
graph = JanusGraphFactory.open("conf/janusgraph-cassandra-es.properties")
g = graph.traversal()
于 2017-12-18T21:22:30.913 回答
0

不确定,你现在需要这个答案,但你能试试这个吗

mgmt.getEdgeLabel('Bad_Name').remove()

之后我不得不关闭图形连接

mgmt.commit()

当我再次检查时,边缘标签不存在。请让我知道它是否也适合您。我正在使用 Janusgraph 0.3.0 。

于 2018-09-01T15:25:49.877 回答