2015-02-05 13 views
3

Я пытаюсь изменить каталог базы данных дивана. Я использую скрипт python для импорта csv-файла в CouchDB. Скрипт работает нормально. Вот на всякий случай:CouchDB change Каталог баз данных

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] Connection refused

Я проверил открытые гнезда (CouchDB по умолчанию используется 5984), и он не открывается. Но при запуске службы CouchDB я не получаю ошибок. Любые идеи, как это исправить?

+0

Я бы проверил вас в новом каталоге и убедился, что у couchdb есть право собственности на него: 'ls -al [new dir]' 'sudo chown -R couchdb: couchdb [new_dir]' – twilson63

ответ

0

Я думаю, ошибка может произойти из-за того, что вы изменили расположение каталога в Local.ini, но когда вы пытаетесь установить новое соединение с существующей базой данных, оно не может найти его там.

Переместите файл database_name.couch в новое место, которое вы можете поместить в local.ini, а затем попытайтесь установить соединение. Я думаю, что это должно сработать.