2

私はRubyonRailsアプリケーションでcouchdbスルーを使用しています。couchrest使用しようとするfutonと、メッセージボックスが表示されてアラートが表示されますbad_utf8_character_code。それを使用してRailsコンソールからレコードにアクセスしようとすると Model.all、、または 誰かがこの問題を分類するのを手伝ってくれますか?500:internal server errorRestClient::ServerBrokeConnection: Server broke connection:Errno::ECONNREFUSED: Connection refused - connect(2)

4

1 に答える 1

0

私はこの問題に遭遇しました。問題のあるドキュメントを削除、変更、さらには表示するために、さまざまなcurl呼び出しを試しました。それらのどれも機能しませんでした。最後に、ドキュメントを一度に1つずつローカルマシンにプルダウンし、「不良」なドキュメントをスキップして、ローカルから本番環境に複製することにしました。

  • アプリを無効にします(これ以上レコードがデータベースに書き込まれなくなります)

  • ローカルデータベースを削除して再作成します(これらのコマンドをシェルで実行します)。

    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"
    
  • アプリを再起動します

于 2012-03-05T22:44:17.550 に答える