Gremlin Server保存的GraphML文件加载报输入字符串错误如何解决
问题成因
报错的核心原因是导出的GraphML文件中包含的ID数值 -2555865115 超出了32位有符号整数的取值范围(-2147483648 ~ 2147483647),默认配置下TinkerGraph的ID解析器会将ID默认作为32位整数处理,数值溢出就会触发格式转换错误。你删除最后一位后的数值 -255586511 在32位整数范围内,所以可以正常导入。
之前添加的ANY类型ID管理器配置不生效,通常是两个原因:一是修改的配置文件没有被Gremlin Server实际加载,二是低版本TinkerPop的ANY类型对长整型ID的兼容存在问题,直接指定为LONG类型更稳定。
修复方案
步骤1:确认生效的配置文件
默认Gremlin Server启动时加载的服务配置文件为 conf/gremlin-server-tinkergraph.yaml,如果你启动时没有指定自定义配置,使用的就是该文件。
打开该yaml文件,找到graphs配置段,查看你使用的图对应的properties文件路径,默认配置如下:
graphs: { graph: conf/tinkergraph-empty.properties }
步骤2:修改图配置
打开上述路径对应的properties文件(你之前修改的conf/tinkergraph-empty.properties),把之前添加的三个ANY配置替换为如下内容:
gremlin.tinkergraph.vertexIdManager=LONG gremlin.tinkergraph.edgeIdManager=LONG gremlin.tinkergraph.vertexPropertyIdManager=LONG
步骤3:重启服务生效
完全停止Gremlin Server再重新启动,避免旧进程残留加载旧配置:
- Linux/Mac停止命令:
bin/gremlin-server.sh stop - Windows停止命令:
bin/gremlin-server.bat stop
确认进程完全关闭后再执行启动命令: - Linux/Mac启动命令:
bin/gremlin-server.sh start conf/gremlin-server-tinkergraph.yaml - Windows启动命令:
bin/gremlin-server.bat start conf/gremlin-server-tinkergraph.yaml
备选临时方案
如果修改配置后仍有问题,可以在导入时显式指定GraphMLReader的宽松解析规则,语句如下:
g.io(path).with('reader', org.apache.tinkerpop.gremlin.structure.io.graphml.GraphMLReader.build().strict(false).create()).read().iterate()
内容的提问来源于stack exchange,提问作者fermmm
相关产品推荐
相关产品推荐

