如何重命名CouchDB数据库?

tep*_*hyr 19 couchdb

我没有看到用于重命名CouchDB数据库的API,或者在Futon中看到用于执行相同操作的选项.

如果没有复制到另一个数据库然后删除原始数据库,是否有一个重命名数据库的方法?

sma*_*thy 28

添加Dominic和PPPaul所说的......

重命名文件绝对是可行的方法(确保将其重命名为同一用户,而不是意外地将所有权更改为root或其他内容).

在完全运行的生产环境中这是绝对安全的,是的.HTTP/REST API的许多优点之一是没有适配器与DB的状态连接.每个请求都是一个新请求.所以基本上重命名完成后第一次向CouchDB发出的请求将能够使用新名称.

但等等,还有更多!

一个非常酷的事情是,即使在重命名之后,CouchDB服务器仍然具有文件本身的打开文件句柄(不受重命名inode的影响),所以在CouchDB服务器实际重启之前,你仍然会能够使用旧名称访问数据库.

更新

ATfPT在评论中很好地观察,显然DB名称需要以小写字母开头,否则它不会出现在Futon中.

更新

我记得的另一件事:找出DB文件的位置,运行: couch-config --db-dir

  • 太糟糕了,没有API调用.如果您无法完全访问CouchDB服务器,则无法使用此解决方案.看来你必须复制和删除,这确实会导致失去修订和查看索引数据的副作用. (3认同)
  • 使用此方法不再在Futon中列出数据库,您是否知道如何解决这个问题?编辑:忽略这一点,我用大写字母前缀重命名它们,它们必须以小写字母开头. (2认同)

Dom*_*nes 9

如果您可以访问数据库文件本身(/var/lib/couchdb根据您的安装而定),您只需重命名即可.

据我所知,这将有效地"重命名"数据库.我会确保在执行此操作时服务器未运行,以防万一.

  • 路径`/ var / lib / couchdb`似乎已过时,我只能看到目录`.delete,eb1d890cf2a17c53cff7a289065c4dd5,._ replicator_design,shards,.shards,._ users_design`和文件'_dbs.couch,_nodes.couch,_replace。 _users.couch` (2认同)

小智 5

我正在使用couchdb 2,我假设之前的答案是旧版本,因为数据库文件没有列在使用'couch-config --db-dir'命令找到的/ var/lib/couchdb文件夹中.

我所遵循的最简单的方法是使用蒲团并将要重命名的数据库复制到新的所需名称,然后删除旧数据库.