&引用;启动复制时出错“;在couchdb中

&引用;启动复制时出错“;在couchdb中,couchdb,Couchdb,我正在couchdb 1.1.0中创建一个“拉”复制器文档: curl -X PUT http://admin:pass@localhost:5984/_replicator/maintenance -d ' { "_id": "maintenance", "source": "http://other.host:5984/maintenance", "target": "maintenance", "create_target": true }' 现在我

我正在couchdb 1.1.0中创建一个“拉”复制器文档:

curl -X PUT http://admin:pass@localhost:5984/_replicator/maintenance -d '
{
    "_id": "maintenance",
    "source":  "http://other.host:5984/maintenance",
    "target":  "maintenance",
    "create_target":  true
}'
现在我检查复制状态:

curl -X GET http://admin:pass@localhost:5984/_replicator/maintenance
{"_id":"maintenance","_rev":"2-0f25f80a2726640944d527d6035e5b80","source":"http://other.host:5984/","target":"maintenance","create_target":true,"_replication_state":"error","_replication_state_time":"2011-09-06T02:35:10+02:00","_replication_id":"354746bf47831195261bf54f3cb6136b"}

出了点问题,但我不知道是什么。我甚至手动创建了数据库,但它仍然不起作用。是否知道问题可能出在哪里?

源属性错误,您必须添加远程数据库:

"source":  "http://other.host:5984/maintenance"
应该有用


干杯,Bernhard

我怀疑您需要在other.host上进行身份验证(例如,它可能有require\u valid\u user=true),所以

您可能希望锁定对_replicatordb的访问,因为任何数据库读取器都可以看到该密码(使用_security文档将其锁定)


加强这一点是CouchDB未来版本讨论的一个活跃话题。

结果表明,我使用了错误的url来启动复制。而不是

curl -X PUT http://admin:pass@localhost:5984/_replicator/maintenance
我必须做:

curl -X POST http://admin:pass@localhost:5984/_replicate -H ...
现在,复制按预期启动。它甚至可以通过create_target和continuous触发,并且工作正常

但是我仍然有一些问题:如何列出活动复制?它们不在
localhost:5984/\u replicator
中列出,url
localhost:5984/\u replicate
仅用于acepts POST请求。如何取消连续复制


最后:有两个不同URL的目的是什么,一个是
localhost:5984/\u replicate
,另一个是
localhost:5984/\u replicator

\u replicator是用于在CouchDB重启后记住复制的新格式。如果使用此格式,只需删除复制文档即可取消复制


当我遇到此错误时:

[Mon,2011年9月12日16:45:05 GMT][error][]启动复制'045020f93f9da91e1e6b609754b32a15+create_target'时出错(文档“维护”):{unauthorized,}。160秒后重试


实际问题是我在JSON中指定了create_target:true,但数据库已经存在。我认为,如果目标已经存在,但不在_replicator/model中,则可以安全地使用以前创建的_target。

您可以查看数据库的日志文件吗?源代码是否有任何管理员帐户?@Marcello:是的,可以,但为什么这与此相关?这是一个拉式复制:它仅从源代码读取。它表示如下内容:
[Tue,06 Sep 2011 10:09:01 GMT][error][]启动复制时出错'79db9d1b523640ee78372225e063795e+create_target'(文档“维护”):{未经授权,}。160秒后重试?
。但是我正在使用admin用户创建复制文档,并且维护数据库也在本地使用同一用户创建。为什么会有任何许可问题?如何调试?正如所指出的,您可能需要将用户凭据添加到“源”URL。抱歉,我复制粘贴错误。我的原始命令在源代码中也有数据库名称。我现在更正我原来的帖子。谢谢你的提示。你提出的建议很有道理,但我仍然没有设置的运气。我在日志中看到此错误:
[Mon,2011年9月12日16:45:05 GMT][error][]启动复制“045020f93f9da91e1e6b609754b32a15+create_target”(文档“维护”)时出错:{unauthorized,}。160秒后重试
。数据库存在于我要复制到的主机中。
curl -X POST http://admin:pass@localhost:5984/_replicate -H ...