SchemaViolationException-JanusGraph问题笔记(二)

场景

Gremlin命令行加载Graph of the Gods(官网入门Demo) GraphOfTheGodsFactory.load(graph)shell

问题 E04: 加载示例图时报错SchemaViolationException

报错信息:后端

org.janusgraph.core.SchemaViolationException: Adding this property for key [~T$SchemaName] and value [rtname] violates a uniqueness constraint [SystemIndex#~T$SchemaName]bash

适用于其余SchemaViolationException(模式冲突)的状况推定post

分析

指Schema冲突,[rtname]违反了惟一性约束。SchemaName这一属性是惟一的,添加的值与先前存在的值冲突。 这是因为先前已经加载过Graph of the Gods,load命令已经执行过,存储中已存在相同的数据了,再次添加数据形成。学习

解决方案

方案一

不须要执行GraphOfTheGodsFactory.load(graph)语句,直接进行示例查询。this

gremlin> g = graph.traversal()
==>graphtraversalsource[standardjanusgraph[cql:[127.0.0.1]], standard]
gremlin> saturn = g.V().has('name', 'saturn').next()
==>v[256]
gremlin> g.V(saturn).valueMap()
==>[name:[saturn], age:[10000]]
gremlin> g.V(saturn).in('father').in('father').values('name')
==>hercules
复制代码

方案二

  • 删除整个图【谨慎操做,不可恢复】, 包含 graph、data、schema 等都会被删除: JanusGraphFactory.drop(graph)

注意: 删除图操做以后要关掉从新进gremlin console,从新打开图再执行load。不然报错 Could not re-open management log

org.janusgraph.core.JanusGraphException: Could not re-open management logspa

或者:命令行

  • 删除存储后端中的数据表,再执行GraphOfTheGodsFactory.load(graph)便可。 HBase中默认的数据表名是“janusgraph

JanusGraph问题与解决系列

JanusGraph学习笔记-问题与解决(一)code

结语

笔记持续更新,欢迎关注。若有帮助,点赞便是鼓励!cdn

相关文章
相关标签/搜索