2011-11-09 54 views
1

这是Rail生产控制台中的错误消息。用户是模型,错误是由“a = User.new”创建的。来自Rails控制台的错误。新

D:\rails_proj\emclab-failed>rails c production 
Loading production environment (Rails 3.1.0) 
irb(main):001:0> a = User.new 
    ←[1m←[36m (0.0ms)←[0m ←[1mSHOW TABLES←[0m 
    ←[1m←[35m (10.0ms)←[0m describe `users` 
SyntaxError: C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.1.0/lib/active_record/attribute_methods/read.rb:91: syntax error, unexpected keyword_end 
C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.1.0/lib/active_record/attribute_methods/read.rb:93: syntax error, unexpected $end, expecting keyword_end 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.1.0/lib/active_record/attribute_methods/read.rb:83:in `module_eval' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.1.0/lib/active_record/attribute_methods/read.rb:83:in `define_read_method' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.1.0/lib/active_record/attribute_methods/read.rb:42:in `define_method_attribute' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.1.0/lib/active_record/attribute_methods/time_zone_conversion.rb:35:in `define_method_attribute' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activemodel-3.1.0/lib/active_model/attribute_methods.rb:291:in `block in define_attribute_method' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activemodel-3.1.0/lib/active_model/attribute_methods.rb:286:in `each' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activemodel-3.1.0/lib/active_model/attribute_methods.rb:286:in `define_attribute_method' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activemodel-3.1.0/lib/active_model/attribute_methods.rb:282:in `block in define_attribute_methods' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activemodel-3.1.0/lib/active_model/attribute_methods.rb:282:in `each' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activemodel-3.1.0/lib/active_model/attribute_methods.rb:282:in `define_attribute_methods' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.1.0/lib/active_record/attribute_methods.rb:14:in `define_attribute_methods' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.1.0/lib/active_record/attribute_methods.rb:65:in `respond_to?' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.1.0/lib/active_record/attribute_methods/read.rb:103:in `read_attribute' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.1.0/lib/active_record/base.rb:1774:in `attribute_for_inspect' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.1.0/lib/active_record/base.rb:1891:in `block in inspect' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.1.0/lib/active_record/base.rb:1889:in `collect' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.1.0/lib/active_record/base.rb:1889:in `inspect' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.1.0/lib/rails/commands/console.rb:45:in `start' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.1.0/lib/rails/commands/console.rb:8:in `start' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.1.0/lib/rails/commands.rb:40:in `<top (required)>' 
     from script/rails:6:in `require' 
     from script/rails:6:in `<main>'irb(main):002:0> 

但是,开发中的相同命令会生成一个没有任何错误的新实例。不同之处在于生产数据库中没有数据。它是用于开发的sqlite3和用于生产的MySQL 5.1.54。

Loading development environment (Rails 3.1.0) 
irb(main):001:0> a = User.new 
=> #<User id: nil, name: nil, email: nil, encrypted_password: nil, salt: nil, status: "active", created_at: nil, updated_at: nil, user_type: nil> 

有什么想法?谢谢。

+0

你能分享你的代码为read.rb吗? – marimaf

+0

错误是在描述还是在'新'上发生? – mkro

+0

它是新的。看到附加的错误。 read.rb是rails的一部分。 – user938363

回答

1

您使用的是什么gem?根据this issue,如果您使用的是mysql2 gem,则可能只需运行bundle update mysql2

+0

它是mysql2。 “bundle update mysql2”后出现同样的错误 – user938363

+0

所以你仍然得到相同的错误?如果是这样,1)你的意思是接受这个答案是正确的吗? 2)当你运行“软件包更新”时,是否更新了mysql2版本? – bostonou