如何重命名 CouchDB 数据库?

问题描述 投票:0回答:5

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

除了复制到另一个数据库然后删除原始数据库之外,是否有一种一次性重命名数据库的方法?

couchdb
5个回答
30
投票

补充 Dominic 和 PPPaul 所说的...

重命名文件绝对是正确的方法(确保将其重命名为同一用户,不要意外地将所有权更改为

root
或其他东西)。

这是在完整运行的生产环境中完全安全的,是的。 HTTP/REST API 的众多优点之一是不存在与数据库有状态连接的适配器。 每个请求都是一个新请求。 所以基本上重命名完成后对 CouchDB 的第一个请求将能够使用新名称。

但是等等,还有更多!

一件非常酷的事情是,即使在重命名之后,CouchDB 服务器仍然拥有文件本身的打开文件句柄(不受重命名 inode 的影响),因此在 CouchDB 服务器实际重新启动之前,您仍然可以也可以使用旧名称访问数据库。

更新

评论中ATfPT的出色观察,显然数据库名称需要以小写字母开头,否则它不会出现在Futon中。

更新

我记得的另一件事:要找出数据库文件的位置,请运行以下命令:

couch-config --db-dir


10
投票

如果您有权访问数据库文件本身(位于

/var/lib/couchdb
,具体取决于您的安装),您可以简单地重命名它。

据我所知,这将有效地“重命名”数据库。我会确保当您执行此操作时服务器没有运行,以防万一。


6
投票

我正在使用 couchdb 2,我假设前面的答案适用于旧版本,因为数据库文件未在使用“couch-config --db-dir”命令找到的 /var/lib/couchdb 文件夹中列出。

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


0
投票

假设您不想损坏数据库,请在 CouchDB 运行时重命名 .couch 文件。


0
投票

正如另一条评论所述; 您需要复制到一个新的;如果不在文件系统上执行一些可能损坏元数据的操作,就无法就地重命名

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.