【发布时间】:2015-02-03 18:42:16
【问题描述】:
我是 CouchDB 的新手,遇到了一个奇怪的问题。我可以创建一个数据库,但不能删除它。
我正在设置一个测试框架,它将在开始时创建数据库的测试版本并在测试运行结束时将其删除,但我真的不想让框架 SSH 到服务器,如建议的那样这个答案Delete couchDB databases。
我的设置是在 Virtual Box 4.3 中运行的 CentOS 7(来自已发布的最小映像)。我从 EPEL 存储库安装了 CouchDB,版本报告为 1.6.1。我可以用蒲团管理数据库来创建数据库,添加和删除文档。删除蒲团中的数据库挂起。使用 curl 删除返回 404 not found。
$ curl -X PUT http://dbserver:5984/test
{"ok":true}
$ curl -X DELETE http://dbserver:5984/test
{"error":"not_found","reason":"missing"}
基于 CouchDB 文档,该文档是删除数据库的正确 URL。我禁用了 SELinux,但没有任何效果。没有启用 CouchDB 安全性,所有设置都保留为默认值。
为什么我不能删除数据库?
【问题讨论】:
-
在创建时尝试添加 /。旧文档指出:“数据库必须以所有小写字母 (a-z)、数字 (0-9) 或任何 _$()+-/ 字符命名,并且必须以 URL 中的斜杠结尾。”如果这可以解决您的问题,我不是,但这就是我在我的图书馆中所做的。有时可能会发生,当您太快地创建然后删除同一个数据库时,会出现错误。
-
不幸的是,这不起作用。我还将 PUT / DELETE 命令间隔超过 30 秒。尝试在两个命令上使用和不使用斜线。一样的回应。我还尝试了两个连续的 PUT,第二个产生了数据库已经存在的响应。 DELETE 然后说它没有。
-
您是否测试过您的安装? dbserver:5984/_utils/verify_install.html
-
是的,我已经运行了测试,但它失败并出现 enoent 错误。在开发模式下下载并构建源文件,删除工作正常。怀疑生产服务器上的权限问题。学习了足够多的 Erlang 来尝试跟踪源代码以找到删除处理程序并添加调试输出,但它被深埋在 Erlang 库源代码的某个地方。在这一点上,我没有更多时间专注于这个问题,因为我没有绑定到 CouchDB 平台,所以我已经切换到 MongoDB。我感谢所有的回应。谢谢。
-
我编辑了问题以包含有关“验证您的安装”失败的注释以及我收到相同错误时得到的日志文件。
标签: couchdb