在Rails 4.2中从SQLite3切换到MySQL后,我无法访问模型上的已审核关联

在Rails 4.2中从SQLite3切换到MySQL后,我无法访问模型上的已审核关联,mysql,ruby-on-rails,ruby,activerecord,sqlite,Mysql,Ruby On Rails,Ruby,Activerecord,Sqlite,我一直在rails应用程序中使用gemaudited。起初我使用的是sqlite3数据库,但最近我改用了MySQL。当我试图访问gem提供的关联(例如:myObject.audits)时,我得到以下错误 `ArgumentError: undefined class/module ActiveRecord::ConnectionAdapters::SQLite3String from /home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/ps

我一直在rails应用程序中使用gem
audited
。起初我使用的是sqlite3数据库,但最近我改用了MySQL。当我试图访问gem提供的关联(例如:myObject.audits)时,我得到以下错误

`ArgumentError: undefined class/module ActiveRecord::ConnectionAdapters::SQLite3String
    from /home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/class_loader.rb:53:in `path2class'
    from /home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/class_loader.rb:53:in `resolve'
    from /home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/class_loader.rb:45:in `find'
    from /home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/class_loader.rb:27:in `load'
    from /home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/visitors/to_ruby.rb:360:in `resolve_class'
    from /home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/visitors/to_ruby.rb:203:in `visit_Psych_Nodes_Mapping'
    from /home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/visitors/visitor.rb:15:in `visit'
    from /home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/visitors/visitor.rb:5:in `accept'
    from /home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/visitors/to_ruby.rb:31:in `accept'
    from /home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/visitors/to_ruby.rb:302:in `block in revive_hash'
    from /home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/visitors/to_ruby.rb:300:in `each'
    from /home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/visitors/to_ruby.rb:300:in `each_slice'
    from /home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/visitors/to_ruby.rb:300:in `revive_hash'
    from /home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/visitors/to_ruby.rb:161:in `visit_Psych_Nodes_Mapping'
    from /home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/visitors/visitor.rb:15:in `visit'
    from /home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/visitors/visitor.rb:5:in `accept'
... 63 levels...
    from /home/david/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/attribute_set.rb:31:in `fetch_value'
    from /home/david/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/attribute_methods/read.rb:93:in `_read_attribute'
    from /home/david/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/attribute_methods/read.rb:87:in `read_attribute'
    from /home/david/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/attribute_methods.rb:305:in `attribute_for_inspect'
    from /home/david/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/core.rb:443:in `block in inspect'
    from /home/david/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/core.rb:441:in `collect'
    from /home/david/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/core.rb:441:in `inspect'
    from /home/david/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/relation.rb:629:in `map!'
    from /home/david/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/relation.rb:629:in `inspect'
    from /home/david/.rvm/gems/ruby-2.1.3/gems/railties-4.2.0/lib/rails/commands/console.rb:110:in `start'
    from /home/david/.rvm/gems/ruby-2.1.3/gems/railties-4.2.0/lib/rails/commands/console.rb:9:in `start'
    from /home/david/.rvm/gems/ruby-2.1.3/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:68:in `console'
    from /home/david/.rvm/gems/ruby-2.1.3/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
    from /home/david/.rvm/gems/ruby-2.1.3/gems/railties-4.2.0/lib/rails/commands.rb:17:in `<top (required)>'
    from bin/rails:4:in `require'
    from bin/rails:4:in `<main>'2.1.3 :004 >`
`ArgumentError:未定义的类/模块ActiveRecord::ConnectionAdapters::SQLite3String
from/home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/class_loader.rb:53:in'path2class'
from/home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/class_loader.rb:53:in'resolve'
from/home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/class_loader.rb:45:in'find'
from/home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/class_loader.rb:27:in'load'
from/home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/visitors/to_ruby.rb:360:in'resolve_class'
from/home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/visitors/to_ruby.rb:203:in'visit_psych_Nodes_Mapping'
from/home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/visitors/visitor.rb:15:in'visit'
from/home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/visitors/visitor.rb:5:in'accept'
from/home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/visitors/to_ruby.rb:31:in'accept'
from/home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/visitors/to_ruby.rb:302:in'block in resove_hash'
from/home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/visitors/to_ruby.rb:300:in'each'
from/home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/visitors/to_-ruby.rb:300:in'each_-slice'
from/home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/visitors/to_ruby.rb:300:in'reserve_hash'
from/home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/visitors/to_ruby.rb:161:在“访问心理节点映射”中
from/home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/visitors/visitor.rb:15:in'visit'
from/home/david/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/psych/visitors/visitor.rb:5:in'accept'
... 63级。。。
from/home/david/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active\u record/attribute\u set.rb:31:in'fetch\u value'
from/home/david/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active\u record/attribute\u methods/read.rb:93:在“读取属性”中
from/home/david/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active\u record/attribute\u methods/read.rb:87:in'read\u attribute'
from/home/david/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active\u record/attribute\u methods.rb:305:in“attribute\u for\u inspect”
from/home/david/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/core.rb:443:in“检查中的块”
from/home/david/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active\u record/core.rb:441:in“collect”中
from/home/david/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/core.rb:441:in“inspect”
from/home/david/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active\u record/relation.rb:629:in'map!'
from/home/david/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active\u record/relation.rb:629:in“inspect”
from/home/david/.rvm/gems/ruby-2.1.3/gems/railties-4.2.0/lib/rails/commands/console.rb:110:in'start'
from/home/david/.rvm/gems/ruby-2.1.3/gems/railties-4.2.0/lib/rails/commands/console.rb:9:in'start'
from/home/david/.rvm/gems/ruby-2.1.3/gems/railties-4.2.0/lib/rails/commands/commands\u tasks.rb:68:在“控制台”中
from/home/david/.rvm/gems/ruby-2.1.3/gems/railties-4.2.0/lib/rails/commands/commands\u tasks.rb:39:in“run\u command!”
from/home/david/.rvm/gems/ruby-2.1.3/gems/railties-4.2.0/lib/rails/commands.rb:17:in`'
从箱子/轨道:4:in“require”
从箱子/轨道:4:in`'2.1.3:004>`

我不确定从何处开始调试此错误。有人能提供一些指导吗?谢谢

psych
是一个YAML引擎。这表明您的gem正在使用
serialize
在数据库中存储散列,但不知何故它将
SQLite3String
实例放入散列,而不是普通的Ruby
String
s。另一个原因是,
序列化了
魔鬼的工作。您有两个问题:(1)抛出或手动转换所有现有的
序列化数据(2)找出是什么将这些扭曲的数据放入数据库。我对宝石或它的工作原理了解不够,无法给你一个正确的答案,抱歉。@muistooshort,不需要抱歉!这是非常有帮助的,我将开始研究这两个方面,我将更新这篇文章。。。或者是比我更有知识的人可以贡献。谢谢我相信这可以通过单独转换数据库列来纠正。我删除了开发数据库中的所有记录,然后对对象进行了更改,这就解决了问题。但是我还没有找到转换该列的方法。问题是数据库列包含YAML,而YAML包含序列化的
SQLite3String
实例。因此,转换列需要右
SQLite3String
类。您可能希望检查MySQL数据库中的YAML,以确保不会重复MySQL中的SQLite问题。