apache / incubator-hugegraph

A graph database that supports more than 100+ billion data, high performance and scalability (Include OLTP Engine & REST-API & Backends)
https://hugegraph.apache.org
Apache License 2.0
2.64k stars 517 forks source link

为什么在删除primaryKey主键模式的顶点时会失败呢 #1454

Closed Ckuangf closed 3 years ago

Ckuangf commented 3 years ago

Expected behavior 期望表现

{type something here...} 删除成功

Actual behavior 实际表现

{type something here...} 删除顶点的时候,会抛出这个异常,但是加上双引号就可以删除 url转译了 http://127.0.0.1:8080/graphs/hugegraph/graph/vertices/33%3AMadara?label=testVertexTarget image 然而删除边的时候同样也是拼接的url却可以正常删除 http://127.0.0.1:8080/graphs/hugegraph/graph/edges/L459448383740837888%3E18%3Efight%3ES33%3AMadara image

Steps to reproduce the problem 复现步骤

  1. {step 1}
  2. {step 2}
  3. {step 3}

Status of loaded data 数据状态

Vertex/Edge summary 数据量

Vertex/Edge example 数据示例

{type something here...}

Schema(VertexLabel, EdgeLabel, IndexLabel) 元数据结构

{type something here...}

Specifications of environment 环境信息

imbajin commented 3 years ago

看了下目前的确如此, vertex-api 会报错是因为它多了一层预先的检查和转换, 而edge-api中没加.

vertex-api 把你传入的 string 尝试直接转为 json, 所以如果没有双引号的参数就会被 json 识别为类似 id: 3:tom 或者 id: aaa 这样的 json 数据, 在 json 语法里就不合法了. 你如果不带双引号输入数值 id 就不会报错, 也是这个原因

(当然, 输出的异常信息里没有说明根本原因, 所以可能有点容易误解)

javeme commented 3 years ago

@Ckuangf 因为边id只有字符串一种形式,顶点id有多种形式(字符串、数字、UUID等),所以顶点id需要使用引号表示字符串类型,使用无引号表示数字类型。

Ckuangf commented 3 years ago

看了下目前的确如此, vertex-api 会报错是因为它多了一层预先的检查和转换, 而edge-api中没加.

vertex-api 把你传入的 string 尝试直接转为 json, 所以如果没有双引号的参数就会被 json 识别为类似 id: 3:tom 或者 id: aaa 这样的 json 数据, 在 json 语法里就不合法了. 你如果不带双引号输入数值 id 就不会报错, 也是这个原因

(当然, 输出的异常信息里没有说明根本原因, 所以可能有点容易误解) 嗯嗯 了解,感谢大佬回复

Ckuangf commented 3 years ago

@Ckuangf 因为边id只有字符串一种形式,顶点id有多种形式(字符串、数字、UUID等),所以顶点id需要使用引号表示字符串类型,使用无引号表示数字类型。

了解了 感谢大佬回复