我可以使用不带URL的数据库名称在CouchDB中启动复制吗?

时间:2018-07-08 22:33:39

标签: couchdb replication

当我创建两个数据库'foo'和'bar',然后创建一个文档

{
    "_id": "whatever",
    "source": "foo",
    "target": "bar"
}

_replicator数据库中,这应该启动从'foo'到'bar'的同步。但是,我在日志中收到此错误:

Could not open file ./data/foo.couch: no such file or directory
open_result error {not_found,no_db_file} for foo
Replication <hash> failed to start "foo" -> "bar"

如果我使用源/目标数据库的完整URL(例如http://localhost:5984/foo),则可以达到相同的效果,但是将复制文档耦合到CouchDB实例的(当前)URL似乎非常错误和不必要,我会如果我要更改端口等,则必须更新它们。docs还指出,对于源/目标,可以使用数据库名称或url。

是否无法使用(相对)数据库名称?如果仅使用名称,为什么会出现上述错误?

我正在Ubuntu 16.04下使用CouchDB 2.1.1。

1 个答案:

答案 0 :(得分:2)

在CouchDB 1.x天内,您可以仅使用源/目标数据库名称的本地名称来指定复制。在CouchDB 2.0的集群世界中,即使从本地->本地复制,_replicator数据库也需要源和目标中的完整URL。

将文档插入此表单的_replicator中:

{
    "_id": "whatever",
    "source": "http://U:P@localhost:5984/source",
    "target": "http://U:P@localhost:5984/target"
}

Documentation here