场景
Gremlin命令行加载Graph of the Gods(官网入门Demo)
GraphOfTheGodsFactory.load(graph)
问题 E04: 加载示例图时报错SchemaViolationException
报错信息:
org.janusgraph.core.SchemaViolationException: Adding this property for key [~T$SchemaName] and value [rtname] violates a uniqueness constraint [SystemIndex#~T$SchemaName]
适用于其他SchemaViolationException(模式冲突)的情况推定
分析
指Schema冲突,[rtname]违反了唯一性约束。SchemaName这一属性是唯一的,添加的值与先前存在的值冲突。 这是由于先前已经加载过Graph of the Gods,load命令已经执行过,存储中已存在相同的数据了,再次添加数据造成。
解决方案
方案一
不需要执行GraphOfTheGodsFactory.load(graph)
语句,直接进行示例查询。
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)
Could not re-open management log
org.janusgraph.core.JanusGraphException: Could not re-open management log
或者:
- 删除存储后端中的数据表,再执行
GraphOfTheGodsFactory.load(graph)
即可。 HBase中默认的数据表名是“janusgraph”
JanusGraph问题与解决系列
结语
笔记持续更新,欢迎关注。如有帮助,点赞即是鼓励!