ruby on rails 응용 프로그램에서 couchdb
에서 couchrest
까지 사용하고 있습니다. futon
을 사용하려고하면 bad_utf8_character_code
이라는 메시지 상자가 나타납니다. Model.all
을 사용하여 레일 콘솔에서 레코드에 액세스하려고 시도하면 500:internal server error
, RestClient::ServerBrokeConnection: Server broke connection:
또는 Errno::ECONNREFUSED: Connection refused - connect(2)
중 하나가 발생합니다.이 문제를 해결하는 데 도움을 줄 수 있습니까?Couchdb bad_utf8_character_code
2
A
답변
0
이 문제가 발생했습니다. 나는 다양한 컬 (curl) 콜을 시도하여 문제를 지우거나 수정하고 심지어는 그저보기 만했다. 그들 중 누구도 일하지 않았습니다. 마지막으로 한 번에 하나씩 내 로컬 컴퓨터로 문서를 가져 와서 "나쁜"문서를 건너 뛰고 내 로컬에서 프로덕션으로 복제하기로 결정했습니다.
해제 응용 프로그램 (그래서 더 이상 레코드가 DB에 기록되지되는)
삭제하고 (쉘에서이 명령 실행) 로컬 데이터베이스를 다시 :
curl -X DELETE http://127.0.0.1:5984/mydb curl -X PUT http://127.0.0.1:5984/mydb
를 아래로 당겨 이 루비 스크립트를 사용하여 라이브에서 로컬로 문서
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"
다시 시작 응용 프로그램