mysql - 带有 .new 的 Rails 控制台出错

标签 mysql ruby-on-rails sqlite ruby-on-rails-3.1

这是 Rails 生产控制台中的错误消息。 User 是一个模型,错误是由“a = User.new”创建的。

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>

有什么想法吗?谢谢。

最佳答案

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

关于mysql - 带有 .new 的 Rails 控制台出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8071207/

相关文章:

javascript - 从 mysql 到 javascript 变量

java - 如何在本地将本地数据库连接到我的 Android 应用程序?

ruby-on-rails - 对 Spree::Images 使用 CDN 和 HTTPS

带参数的 MySQL View

java - 如何在 opensuse 上连接到 mysql localhost?

ruby-on-rails - Rails 项目中是否需要以下命名约定?

ruby-on-rails - Rails send_data 只能工作 'inline' 无法下载

sqlite - 在版本控制中存储 SQLite 数据库是否有意义?

python - sqlite 的 fetchall 返回 None 而不是一个空列表

python - 将 SQLAlchemy 包装在 Python 的类中