Couchdb bad_utf8_character_code - PullRequest
       21

Couchdb bad_utf8_character_code

2 голосов
/ 24 ноября 2011

Я использую couchdb - couchrest в приложении ruby ​​on rails.Когда я пытаюсь использовать futon, появляется предупреждение с сообщением bad_utf8_character_code.Если я пытаюсь получить доступ к записям из консоли rails, используя Model.all, то возникает либо 500:internal server error, RestClient::ServerBrokeConnection: Server broke connection:, либо Errno::ECONNREFUSED: Connection refused - connect(2). Может ли кто-нибудь помочь мне разобраться в этой проблеме?

1 Ответ

0 голосов
/ 06 марта 2012

Я столкнулся с этой проблемой.Я пробовал разные вызовы curl для удаления, изменения и даже просто просмотра оскорбительного документа.Никто из них не работал.Наконец, я решил вытащить документы на локальный компьютер по одному, пропустить «плохой», а затем скопировать их с локального на рабочий.

  • Отключить приложение (поэтому больше записей не записывается в базу данных)

  • Удалить и воссоздать локальную базу данных (выполнить эти команды в оболочке):

    curl -X DELETE http://127.0.0.1:5984/mydb
    curl -X PUT http://127.0.0.1:5984/mydb
    
  • Извлечение документов из оперативного в локальное с использованием этого сценария ruby ​​

require 'bundler'
require 'json'

all_docs = JSON.parse(`curl http://server.com:5984/mydb/_all_docs`)
docs = all_docs['rows']
ids = docs.map{|doc| doc['id']}
bad_ids = ['196ee4a2649b966b13c97672e8863c49']

good_ids = ids - bad_ids

good_ids.each do |curr_id|
  curr_doc = JSON.parse(`curl http://server.com:5984/mydb/#{curr_id}`)
  curr_doc.delete('_id')
  curr_doc.delete('_rev')
  data = curr_doc.to_json.gsub("\\'", "\'").gsub('"','\"')
  cmd = %Q~curl -X PUT http://127.0.0.1:5984/mydb/#{curr_id} -d "#{data}"~
  puts cmd
  `#{cmd}`
end
  • Уничтожить (удалить) и воссоздать производственную базу данныхсделал это в футоне)

  • Копировать

    curl -X POST http://127.0.0.1:5984/_replicate -d '{"target":"http://server.com:5984/mydb", "source":"http://127.0.0.1:5984/mydb"}' -H "Content-Type: application/json"
    
  • Перезапустить приложение

...