Не удается выполнить репликацию на iriscouch

Я пытаюсь создать пример приложения, используя couchapp, couchdb. Я также использую плагин jquery.couch.js для связи с моим локальным couchdb. Однако, когда я пытаюсь скопировать его на мое удаленное кресло на iriscouch.com, я получаю следующую ошибку:

Replication failed: {error,
{{badarg,
     [{erlang,list_to_existing_atom,["data_size"]},
      {couch_rep,'-dbinfo/1-lc$^0/1-0-',1},
      {couch_rep,'-dbinfo/1-lc$^0/1-0-',1},
      {couch_rep,do_init,1},
      {couch_rep,init,1},
      {gen_server,init_it,6},
      {proc_lib,init_p_do_apply,3}]},
 {child,undefined,"6f5beff2bd381e02b602cee2e8e1e86d",
     {gen_server,start_link,
         [couch_rep,
          ["6f5beff2bd381e02b602cee2e8e1e86d",
           {[{<<"source">>,<<"zwaroop">>},
             {<<"target">>,
              <<"http://username:password@swaroopsm.iriscouch.com/zwaroop">>}]},
           {user_ctx,<<"root">>,
               [<<"_admin">>],
               <<"{couch_httpd_auth, cookie_authentication_handler}">>}],
          []]},
     temporary,1,worker,
     [couch_rep]}}}

Где я ошибаюсь?

2 ответа

Решение

Если вы используете Ubuntu 12.04 (который поставляется с CouchDB v1.0.1), вы можете использовать PPA вместо установки CouchDB из исходного кода. Например, https://launchpad.net/~novacut/+archive/daily имеет точный обратный порт 1.2.0; Я установил его с

$ sudo apt-add-repository ppa:novacut/daily
$ sudo apt-get update
$ sudo apt-get install couchdb

После обновления до 1.2.0 проблема была решена.

РЕДАКТИРОВАТЬ: хранилище Novacut больше не содержит пакет для couchdb, так как версия 1.5.0 была включена в Ubuntu Trusty ( http://packages.ubuntu.com/trusty/couchdb).

Интересно, это несовпадение версий? Какую версию CouchDB вы используете в своей локальной системе?

В любом случае, быстрым обходным путем будет редактирование исходного кода CouchDB и вставка data_size в любом месте кода.

Например, src/couchdb/couch_doc.erl

-spec to_path(#doc{}) -> path().
to_path(#doc{revs={Start, RevIds}}=Doc) ->
    data_size, % This no-op expression allows list_to_existing_atom
    [Branch] = to_branch(Doc, lists:reverse(RevIds)),
    {Start - length(RevIds) + 1, Branch}.

Однако, надеюсь, мы сможем найти что-то лучшее, чем это, определив ваши версии.

Другие вопросы по тегам