简体   繁体   中英

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

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 (:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM