无法重命名现有的边缘关系;使用UNSAFE失败

时间:2018-10-17 03:40:09

标签: orientdb

我似乎无法重命名Edge。 OrientDB有可能吗?

我正在3台服务器上以分布式模式运行OrientDB。 每个服务器配置为

  • OS:CentOS Linux版本7.5.1804(核心)
  • OrientDB:3.0.9

在Studio网络界面中,要重命名Edge,请单击要重命名的Edge旁边的“重命名”按钮。

我在屏幕底部收到此消息:

com.orientechnologies.orient.core.exception.OCommandExecutionException: Cannot alter class 'Transfer2' because is an Edge class and could break vertices. Use UNSAFE if you want to force it DB name="marksluser"

在控制台中,我执行

orientdb {db=marksluser}> ALTER CLASS Transfer2 NAME Transfer UNSAFE;

Error: com.orientechnologies.orient.core.exception.OCommandExecutionException: Invalid class name: ALTER CLASS Transfer2 NAME Transfer UNSAFE
DB name="marksluser"
DB name="marksluser"

Error: com.orientechnologies.orient.core.exception.OCommandExecutionException: Cannot alter class 'Transfer2' because is an Edge class and could break vertices. Use UNSAFE if you want to force it
DB name="marksluser"

我还尝试按照Renaming existing edge relationships?中的描述将输入和输出边缘重命名为新名称,但是仍然无法正常工作。

我做错什么了吗?

1 个答案:

答案 0 :(得分:0)

我使用运行3.0.9的干净数据库再次尝试了此操作,问题仍然存在。我在开发版本3.1.0-M2上使用“ UNSAFE”进行了尝试!

好像我将在3.1.0-M2版本中工作。

因此,如果要将边从“ Edge1”重命名为“ Edge2”,并且所有顶点都是V的子类,请执行:

ALTER CLASS Edge1 NAME Edge2 UNSAFE;
UPDATE V SET out_Edge2 = out_Edge1 where out_Edge1 is not null;
UPDATE V SET in_Edge2 = in_Edge1 where in_Edge1 is not null;
UPDATE V REMOVE out_Edge1 where out_Edge1 is not null;
UPDATE V REMOVE in_Edge1 where in_Edge1 is not null;