20

我没有看到用于重命名 CouchDB 数据库的 API,也没有看到 Futon 中的选项来做同样的事情。

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

4

4 回答 4

29

添加到多米尼克和 PPPaul 所说的......

重命名文件绝对是要走的路(确保将其重命名为同一用户,而不是意外更改所有权root或其他内容)。

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

但是等等,还有更多!

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

更新

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

更新

Another thing I remembered: to find out where the DB files are, run this: couch-config --db-dir

于 2012-07-21T22:01:46.450 回答
10

如果您有权访问数据库文件本身(/var/lib/couchdb取决于您的安装),您可以简单地重命名它。

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

于 2012-07-21T14:50:10.237 回答
6

I am using couchdb 2, i assume the previous answers are for an older version because the database files are not listed in the /var/lib/couchdb folder found using 'couch-config --db-dir' command.

the simplest way i am following is to use futon and replicate the db you want to rename to a new desired name then delete the old database.

于 2017-10-10T16:02:43.030 回答
0

Assuming you don't want to corrupt your databases, rename the .couch files when CouchDB is not running.

于 2012-12-05T16:07:31.783 回答