2

我在 ruby​​ on rails 应用程序中使用couchdbthrough 。couchrest当我尝试使用futon它时,会出现一个消息框提示bad_utf8_character_code. 如果我尝试使用Model.all它从 rails 控制台访问记录,则会引发以下任何一个问题500:internal server errorRestClient::ServerBrokeConnection: Server broke connection:或者Errno::ECONNREFUSED: Connection refused - connect(2) 任何人都可以帮我解决这个问题吗?

4

1 回答 1

0

我遇到了这个问题。我尝试了各种 curl 调用来删除、修改甚至只是查看有问题的文档。他们都没有工作。最后,我决定一次将一份文件下载到我的本地机器上,跳过“坏”的一份,然后从我的本地机器复制到生产环境。

  • 禁用应用程序(因此不再向数据库写入记录)

  • 删除并重新创建本地数据库(在 shell 中运行这些命令):

    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 回答