【问题标题】:CouchDB change Database directoryCouchDB 更改数据库目录
【发布时间】:2015-02-05 18:36:28
【问题描述】:

我正在尝试更改沙发数据库的目录。我正在使用 python 脚本将 csv 文件导入到 CouchDB。脚本运行正常。以防万一:

from couchdbkit import Server, Database
from couchdbkit.loaders import FileSystemDocsLoader
from csv import DictReader
import sys, subprocess, math, os

def parseDoc(doc):
    for k,v in doc.items():
        if (isinstance(v,str)):
            #print k, v, v.isdigit()
            # #see if this string is really an int or a float
            if v.isdigit()==True: #int
                doc[k] = int(v)
            else: #try a float
                try:
                    if math.isnan(float(v))==False:
                        doc[k] = float(v) 
                except:
                    pass            
    return doc

def upload(db, docs):
    db.bulk_save(docs)
    del docs
    return list()

def uploadFile(fname, dbname):
  #connect to the db
  theServer = Server()
  db = theServer.get_or_create_db(dbname)

  #loop on file for upload
  reader = DictReader(open(fname, 'rU'), dialect = 'excel')

  docs = list()
  checkpoint = 100
  i = 0
  for doc in reader:
    newdoc = parseDoc(doc) 
    docs.append(newdoc)

    if len(docs)%checkpoint==0:
      docs = upload(db,docs)
      i += 1
      print 'Number : %d' %i

  #don't forget the last batch        
  docs = upload(db,docs)

if __name__=='__main__':
  x = '/media/volume1/Crimes_-_2001_to_present.csv'
  filename = x
  dbname = 'test'
  uploadFile(filename, dbname)

我看到很多关于如何更改目录以附加数据库的帖子。如果我保留 /etc/couchdb/local.ini 原样(安装后的原始文件),则脚本会将数据附加到默认目录 /var/lib/couchdb/1.0.1/。当我修改 local.ini 以将数据库存储到另一个磁盘时:

database_dir = /media/volume1 view_index_dir = /media/volume1

重新启动 CouchDB 服务后,我收到此错误:

restkit.errors.RequestError: socket.error: [Errno 111] 连接被拒绝

我检查了打开的套接字(couchdb 默认使用 5984)并且它没有打开。但是当我启动 CouchDB 服务时我没有收到任何错误。 任何想法如何解决它?

【问题讨论】:

  • 我会检查你的新目录并确保 couchdb 拥有它的所有权:ls -al [new dir]sudo chown -R couchdb:couchdb [new_dir]

标签: linux sockets couchdb


【解决方案1】:

我认为错误可能是由于您更改了 Local.ini 中的目录位置,但是当您尝试与现有数据库建立新连接时,它无法找到它。

因此,将 database_name.couch 文件移动到新位置,您可以将其放入 local.ini,然后尝试建立连接。我认为这应该可行。

【讨论】:

    猜你喜欢
    • 2011-04-21
    • 1970-01-01
    • 2016-02-28
    • 2015-12-28
    • 1970-01-01
    • 2017-04-23
    • 2017-11-21
    • 2012-09-21
    • 1970-01-01
    相关资源
    最近更新 更多