2016-05-19 4 views
0

У меня есть граф, имеющий вершины с свойством fbid, и я создал индекс для него с ограничением уникальности. Инициализация графа (установка схемы и добавление некоторых начальных вершин и ребер) происходило с помощью Java-кода, который я добавил к библиотекам Titan и что я вручную запустить в гремлина оболочки:Попытка добавить вершину с свойством нарушает ограничение единственности, несмотря на значение свойства еще нет

gremlin> :> com.my.example.TestGraphFactory.loadScheme(graph) 
gremlin> :> com.my.example.TestGraphFactory.loadGraph(graph) 

Теперь я пытаюсь сделать это:

gremlin> :> g.V().has('fbid', 'fbid_42') 
gremlin> :> g.V().addV(label, 'user').property('fbid', 'fbid_42') 
Adding this property for key [fbid] and value [fbid_42] violates a uniqueness constraint [fbid] 
Display stack trace? [yN] y 
org.apache.tinkerpop.gremlin.groovy.plugin.RemoteException: Adding this property for key [fbid] and value [fbid_42] violates a uniqueness constraint [fbid] 
at org.apache.tinkerpop.gremlin.console.groovy.plugin.DriverRemoteAcceptor.submit(DriverRemoteAcceptor.java:116) 
at org.apache.tinkerpop.gremlin.console.commands.SubmitCommand.execute(SubmitCommand.groovy:41) 
at org.codehaus.groovy.tools.shell.Shell.execute(Shell.groovy:101) 
at org.codehaus.groovy.tools.shell.Groovysh.super$2$execute(Groovysh.groovy) 
at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:498) 
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) 
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324) 
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1207) 
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:130) 
at org.codehaus.groovy.tools.shell.Groovysh.executeCommand(Groovysh.groovy:254) 
at org.codehaus.groovy.tools.shell.Groovysh.execute(Groovysh.groovy:153) 
at org.codehaus.groovy.tools.shell.Shell.leftShift(Shell.groovy:119) 
at org.codehaus.groovy.tools.shell.ShellRunner.work(ShellRunner.groovy:94) 
at org.codehaus.groovy.tools.shell.InteractiveShellRunner.super$2$work(InteractiveShellRunner.groovy) 
at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:498) 
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) 
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324) 
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1207) 
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:130) 
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuper0(ScriptBytecodeAdapter.java:150) 
at org.codehaus.groovy.tools.shell.InteractiveShellRunner.work(InteractiveShellRunner.groovy:123) 
at org.codehaus.groovy.tools.shell.ShellRunner.run(ShellRunner.groovy:58) 
at org.codehaus.groovy.tools.shell.InteractiveShellRunner.super$2$run(InteractiveShellRunner.groovy) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:498) 
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) 
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324) 
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1207) 
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:130) 
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuper0(ScriptBytecodeAdapter.java:150) 
at org.codehaus.groovy.tools.shell.InteractiveShellRunner.run(InteractiveShellRunner.groovy:82) 
at org.codehaus.groovy.vmplugin.v7.IndyInterface.selectMethod(IndyInterface.java:215) 
at org.apache.tinkerpop.gremlin.console.Console.<init>(Console.groovy:144) 
at org.codehaus.groovy.vmplugin.v7.IndyInterface.selectMethod(IndyInterface.java:215) 
at org.apache.tinkerpop.gremlin.console.Console.main(Console.groovy:303) 

Я не видим причин для этого, так как это практически первого действия, которое я беру после создания схемы и не инициализации графа с некоторыми первыми вершинами и ребрами (ни один из них с этой конкретной недвижимостью стоимость).

Где я должен смотреть?

+0

Можете ли вы опубликовать код для 'loadScheme' и' loadGraph'? –

+0

Оба не вызвали проблему. Я сделал ошибку в заявлении о запросе. См. Мой ответ ниже. –

ответ

0

Причина лежит здесь:

gremlin> :> g.V().addV(label, 'user').property('fbid', 'fbid_42') 

Я был слишком слеп, чтобы увидеть, что я могу сделать запрос, чтобы получить все вершины, прежде чем пытаться добавить новую вершину. Таким образом, правильный запрос будет

gremlin> :> g.addV(label, 'user').property('fbid', 'fbid_42')