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