为什么cleandb扩展拒绝删除我的neo4j图数据库?

时间:2013-05-31 17:35:35

标签: neo4j neo4django

尝试使用neo4j扩展程序(对于neo4j 1.8)清除cleandb(1.8.2)时,它会失败:

[path] ? curl -v -X DELETE 'http://localhost:7475/db/cleandb/12sE$lkj3%'
* About to connect() to localhost port 7475 (#0)
*   Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 7475 (#0)
> DELETE /db/cleandb/12sE$lkj3% HTTP/1.1
> User-Agent: curl/7.29.0
> Host: localhost:7475
> Accept: */*
> 
< HTTP/1.1 500 Internal Server Error
< Content-Length: 0
< Server: Jetty(6.1.25)
< 
* Connection #0 to host localhost left intact

显然,我不仅会获得500错误代码,而且db也不会被清除。 当然,插件的访问URL和“密钥”设置为curl请求中使用的:

org.neo4j.server.thirdparty_jaxrs_classes=org.neo4j.server.extension.test.delete=/db/cleandb
org.neo4j.server.thirdparty.delete.key=12sE$lkj3%

我会方便地添加 cleandb 标签,但我缺乏1500的声誉。

有什么想法吗?提前谢谢!

修改 (我使用cleandb的原因是在neo4django中设置单元测试)。 的 /修改

2 个答案:

答案 0 :(得分:2)

嗯,我有一个针对1.8.2和1.9本地工作的cleandb扩展。例如,您可以运行

from neo4django.db import connection
from pdb import set_trace; set_trace()
connection.cleandb()

并跟踪cleandb Python调用,它获得一个200和随附的响应主体,

{\n  "node-indexes" : [ ],\n  "nodes" : 4,\n  "relationship-indexes" : [ ],\n  "relationships" : 0,\n  "maxNodesToDelete" : 1000\n}

我不确定curl和Python调用之间的区别是什么 - 你有可能在模块中尝试上述操作,运行它,看看会发生什么?

编辑:

cleandb扩展是不受管理的,所以你不能(IIRC?)将URL设置为&#39; / db / cleandb&#39;,它需要在它自己的root上 - 我使用&#39 ; / cleandb&#39 ;. LMK如果有帮助的话!

编辑:

噢,不要理会,&#39; / db /&#39;网址似乎工作正常。也许你可以使用&#39; install_local_neo4j.bash&#39;脚本(https://github.com/scholrly/neo4django/blob/master/install_local_neo4j.bash)安装Neo4j的副本并以相同的方式设置它,如果它适合你?如果是这样,也许我们可以看到设置有何不同......

答案 1 :(得分:1)

它只适用于Neo4j版本,我认为高达1.7。

不再更新它b / c你现在可以使用cypher进行清理,请参阅:http://neo4j.org/resources/cypher

start n=node(*)
match n-[r?]->()
where id(n) <> 0
delete n,r