我没有看到用于重命名 CouchDB 数据库的 API,也没有看到 Futon 中执行相同操作的选项。
除了复制到另一个数据库然后删除原始数据库之外,是否有一种一次性重命名数据库的方法?
补充 Dominic 和 PPPaul 所说的...
重命名文件绝对是正确的方法(确保将其重命名为同一用户,不要意外地将所有权更改为
root
或其他东西)。
这是在完整运行的生产环境中完全安全的,是的。 HTTP/REST API 的众多优点之一是不存在与数据库有状态连接的适配器。 每个请求都是一个新请求。 所以基本上重命名完成后对 CouchDB 的第一个请求将能够使用新名称。
但是等等,还有更多!
一件非常酷的事情是,即使在重命名之后,CouchDB 服务器仍然拥有文件本身的打开文件句柄(不受重命名 inode 的影响),因此在 CouchDB 服务器实际重新启动之前,您仍然可以也可以使用旧名称访问数据库。
评论中ATfPT的出色观察,显然数据库名称需要以小写字母开头,否则它不会出现在Futon中。
我记得的另一件事:要找出数据库文件的位置,请运行以下命令:
couch-config --db-dir
如果您有权访问数据库文件本身(位于
/var/lib/couchdb
,具体取决于您的安装),您可以简单地重命名它。
据我所知,这将有效地“重命名”数据库。我会确保当您执行此操作时服务器没有运行,以防万一。
我正在使用 couchdb 2,我假设前面的答案适用于旧版本,因为数据库文件未在使用“couch-config --db-dir”命令找到的 /var/lib/couchdb 文件夹中列出。
我遵循的最简单的方法是使用 futon 并将要重命名的数据库复制为新的所需名称,然后删除旧数据库。
假设您不想损坏数据库,请在 CouchDB 不运行时重命名 .couch 文件。
正如另一条评论所述; 您需要复制到一个新的;如果不在文件系统上执行一些可能损坏元数据的操作,就无法就地重命名