undefined method `explain' for #<ActiveRecord::ConnectionAdapters::MysqlAdapter

爱⌒轻易说出口 提交于 2020-01-12 19:12:29

问题


I'm new to Ruby on Rails, but I have followed some tutorials and know my way around a little bit. I have generated some scaffolding and inserted data into a MySql database.

When navigating to index.html.erb I receive the error in the title

The controller is executing index

  def index
    @beers = Beer.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render :json => @beers }
    end
  end

And has this as a structure

Beer: id, brewer_id, name, price, score, color, brew_type, create_at, updated_at

RoR is working for other scaffolding I have created, and listing data. I updated the structure in mysql for the entity Beer, and it probably hasn't reflected changes in rails (dunno).

Do I need a different gem for connecting rails to a mysql db? Any advice on what to check for would be appreciated (:


回答1:


I'm guessing that you're using Rails 3.2 and that your Beer.all call is taking too long. From the 3.2 release notes:

Queries that take more than half a second to run are automatically explained in the development mode. This threshold, of course, can be changed.

And if we look at the MySQL adapter for Rails, there is no explain method. However, the MySQL2 adapter does understand explain.

First of all, you probably need less beer or some pagination. Then, you should try switching to the MySQL2 adapter; just install the new adapter by editing your Gemfile to use mysql2, run bundle to get the new stuff set up, and then change your database.yml to look more like this:

development:
  adapter: mysql2


来源:https://stackoverflow.com/questions/9057863/undefined-method-explain-for-activerecordconnectionadaptersmysqladapter

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!