当我创建两个数据库'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。
答案 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"
}