我似乎无法重命名Edge。 OrientDB有可能吗?
我正在3台服务器上以分布式模式运行OrientDB。 每个服务器配置为
在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?中的描述将输入和输出边缘重命名为新名称,但是仍然无法正常工作。
我做错什么了吗?
答案 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;